Better buffer type detection

All the tests are still passing, but this is a breaking API change. There's no more "looks like base64" checking.

 * `parse()`: Now a Buffer instance gets returned directly when parsing `<data>` nodes. In the web browser, the "buffer" instance is backed by a `Uint8Array`.
 * `build()`: Now you can use a `Buffer`, `ArrayBuffer`, a `DataView` or any typed array to encode `<data>` nodes.

Note that the `base64-js` dependency being introduced is the same one that browserify uses to implement it's `Buffer` emulation, so there should not be a huge change in compiled filesize, because the new dep was already being used implicitly.