Add support for reading and writing MessagePack, a binary object serialization format which aims to be more compact than text formats like JSON or YAML. The specification can be found at https://github.com/msgpack/msgpack/blob/master/spec.md
AMD is defining our next code object metadata format in terms of MessagePack, and the linked patches reflect that use.
You can drop the 'public' here, since it's the default/assumed in a struct.