The `btoa` and `atob` functions are not safe to use with binary data because internally they turn it into strings which means byte values that do not map to printable characters get mangled because that's how js strings work.
The change here is to port the [rfc4648 alogrithm from js-multibase](https://github.com/multiformats/js-multibase/blob/master/src/rfc4648.js) to this implementation as it handles all this correctly.
1. Use `rfc4648` to implement base16/32/64
2. Remove base64 browser/node shim
3. Add tests for correctly encdoing/decoding binary data that maps to non-printable characters
4. Remove unused code
5. Perform `'multibase mismatch'` and `'decoder composition'` tests in a `test` block instead of `describe` so they show up as tests
6. Add missing bases/hashes to basics export
7. Adds basics file to exports list
8. Removes ___browser property from sha2 exports because it's only used in tests and makes things like [{ ...sha2 }](https://github.com/multiformats/js-multiformats/blob/master/src/basics.js#L13) contain mixed types
Fixes #102