Give Base64 lots of love.

Fix some bugs, such as decoding of input that contains lots
of padding or whitespace. See
https://code.google.com/p/android/issues/detail?id=66078

Improve performance by correctly guessing the output array
size whenever the input doesn't contain whitespace.

Build Base64 into ByteString, and expose it through there
only.

Use more reasonable names in the implementation.