Packet Validity Detection

Added a compile time, template-based solution which allows a packet direction/state/ID combination to be determined to be valid (part of the protocol) or invalid (not).
Strict Aliasing

Fixed a couple of places where strict aliasing was broken.
Remove Historical Implementation Artifact

In a past conception of the packet parsing/serialization system, the PacketImpl::PacketContainer class had subclasses.  This is no longer the case, but PacketImpl::PacketContainer's members were marked protected -- rather than private -- anyway.
Signed VarInts

Mojang's signed VarInts are represented using the unsigned encoding of their bitwise representation, rather than zig-zag encoding (as I had originally thought).

Updated VarInt serialization/deserialization accordingly.