function execution halts entirely on a invalid base, so we never
actually get to our 'return 1'. I'm not sure how our expected failures
ever actually worked, but it's quite plain to see that:
$ a=$(( 2#3 )); echo hi
Never echos "hi". Use a subshell in valid_number_of_base so that we can
properly "trap" execution, and return a meaningful result.
This prevents some odd interactions with the EXIT trap, and our last
command's status is seemingly not preserved for the script's real exit.
Add a BASH override to the Makefile as well, as it might be useful for
debugging or testing against other versions of bash.