In order to make sure we can implement future functionality while maintaining backward compatibility, make some minor tweaks to the way that type info is serialized in binary form:
1. Add a "format" marker so we can detect different versions
2. Define endianness.
3. Add a hash (so we can cache deserializations efficiently)
4. Add a size (so we can embed inside other serializations).