ObjectData

Added a typedef for ObjectData.
Template Recursion Depth Fix

Fixed a bug -- was using the constexpr variable PacketImpl::Largest as opposed to PacketImpl::LargestID to constrain template recursion depth -- which was causing templates in the packet deserializer to recurse to ridiculous depths.
PacketParser::FromBytes Clean Up

Cleaned up the way in which PacketParser::FromBytes detects whether or not the deserializer actually consumed the number of bytes specified by the length header.

This implementation is cleaner, clearer, and possibly very slightly more efficient.
Packet Pretty Printing

Added ToString methods (and corresponding documentation!) which allow packets and members of the ProtocolState and ProtocolDirection enumerations to be pretty printed for debugging.

Several of the more obscure types in the protocol do not have pretty printers yet, but most packets can be described/pretty printed in their entirety.
common.hpp Clean Up/Fix

Removed metadata.hpp -- which no longer exists -- from the includes in common.hpp.

Removing this file entirely is still on my todo list, but until then it must be maintained...
NBT Strict Aliasing Fix

Fixed two places in nbt.cpp where strict aliasing was broken.