Refactor to implement the new MessagePack spec

The [new MessagePack spec](https://github.com/msgpack/msgpack/blob/master/spec.md) added and updated a few of it's types.

tldr of the spec changes:

* `bin8`, `bin16` and `bin32` have been added which replace `raw16` and `raw32`.
* `str8`, `str16` and `str32` have been added to represent UTF-8 encoded textual data.
* a new `ext` family of types has been introduced, allowing custom uses of the protocol in "reserved" spots in the spec - `fixext1`, `fixext2`, `fixext4`, `fixext8`, `fixext16`, `ext8`, `ext16` and `ext32`.

This pull refactors Mochilo to take advantage of this new spec. The changes to Mochilo itself are:

* The `String16` and `String32` types have been split up. Using `str8`, `str16` and `str32` for UTF-8 encoded text. And using the `ext8`, `ext16` and `ext32` types from the new MessagePack spec for representing strings in all other encodings except binary.
* Strings tagged as binary will now use the `bin8`, `bin16` and `bin32` types instead of  `raw16` and `raw32`.
* Support for a Symbol type has been dropped. Attempting to encode a Symbol (or any other unsupported type) will raise.