Base64

Added a base 64 encoder to process the favicons that will be sent through the new server status packet.
InsufficientBytes Fix

The InsufficientBytes static helper method Raise was throwing exceptions of the wrong type.
Remove Commented Code

Removed a commented line from packet.cpp that was commented out in testing, never needed again, and never deleted.
Packet Parsing Update

Updated the manner in which several packets are parsed.

Added/filled in the parse maps for a few packet types.
MCPP Overhaul -- New Protocol

Overhauled quite a few elements of mcpp.dll while integrating the new protocol:

- Packets are now serialized to bytes through the Client class through a template.  This should reduce serialization times as opposed to the previous methods as there no longer needs to be any kind of parse map lookup -- that's done at compile time.
- Client states are now tracked based on ProtocolState rather than ClientState.  ClientState has been removed.
- Removed the include for common.hpp from event.hpp, which broken several other areas of the code base (due to missing includes).  Appropriate includes have been added.
- Updated the receive handler in the server and the packet router to receive/parse/route new packets.
- Updated the ping module to implement the new server status response/request/ping/ping model.
- Added a handshake module to deal with the new Handshake state of the protocol.
- Receive events are now dispatched via an event object, no longer is a static number of parameters passed to the callbacks.  This should make it easier to add new parameters going forward, as callbacks will not have to be updated.
- Updated mcpp.mk so that new object files (JSON, Base64, et cetera) are built into mcpp.dll.