Some tests for base64 and if I understand correctly a partial fix

I tried running `echo STUFF | base64 -w 0 | ./base64`, but it almost always failed to parse.

So I wrote a test() function that gets called at the beginning of base64:main() and only outputs things if tests fail. Some tests do (as I expected, seeing the comment about "why doesn't it behave like we expect?!").

I think I also improved the parser itself in the second commit, but I did base64 from memory and hammer from grep, so I probably just broke things.

This looks fun, I might hack on it a bit more if I can get some showing-around.