Seralize and Deserialize functions()

For storing and retrieving IUnits, intended to be used across networking
connections.
Switch serialization over to msgpack protocol

This has some pros and cons for server-side but it will make writing the
client easier. It will also make partial updates of a unit easier (for
example, changing a unit's health without changing the unit's tags).