Refactor to implement the new MessagePack spec

This drops the Symbol type as well as fully implements the new MessagePack spec to take advantage of it's 3 `ext8`, `ext16` and `ext32` types for our string-with-encoding type.
    
For Strings which are tagged `UTF-8`, the `str` types from the MessagePack spec are used. For Strings which are tagged `ASCII-8BIT` the `bin` types from the MessagePack spec are used.
:+1: all for raising