Version 0.3: Refactor for speed & extensibility

Planned features:
 * Less coupled codecs and ability to add new ones.
 * Stateful encoding/decoding to support streaming.
 * Support surrogate pairs in JS strings.
 * Support node.js StringDecoder interface.
 * More multibyte encodings.

Less likely, but maybe:
 * Browser support through ArrayBuffers.
 * Good Browserify support.
 * Support interface of http://encoding.spec.whatwg.org

See also:
http://code.google.com/p/stringencoding/
http://encoding.spec.whatwg.org
http://www.khronos.org/registry/typedarray/specs/latest/
https://developer.mozilla.org/en-US/docs/JavaScript_typed_arrays
ArrayBuffer polyfill http://www.calormen.com/polyfill/ https://bitbucket.org/lindenlab/llsd/src/7d2646cd3f9b/js/typedarray.js