RSA Public Key Handling Fix

Was using i2d_RSAPublicKey and d2i_RSAPublicKey rather than i2d_RSA_PUBKEY and d2i_RSA_PUBKEY, resulting in representations of the RSA public key that the vanilla Minecraft client could not understand.
Players Update

Updated the players module to use the new packet received event -- PacketEvent -- meaning that it now compiles again.
Authentication Update

Updated the authentication module to use the new packet received event -- PacketEvent -- so it compiles again.
Command Line Front-End - Argument Parsing

Added command line argument parsing to the CLI library.

The interactive, command line front-end now properly handles/parses command line arguments.
Keep Alive Rewrite

Rewrote the keep alive module to bring it in line with more modern conventions with respect to logging, and to integrate it with the 1.7 protocol changes.

The rewrite also vastly improved the style/readability of the code.
Chat Update

Switched the chat module over to using PacketEvent rather than ReceiveEvent, so it compiles once again.
JSON Debug Display Change

Changed the way JSON objects are rendered when debugging packets.  Now a tree structure representing the object, as well as the serialized JSON is displayed, rather than just the former.
Chat Fix

In 1.7.2 Mojang seems to have changed the way that newline characters are rendered by the client.

Previously -- 1.6.4 -- the client would actually render a line break, allowing multi-line chat messages to be sent as one message.

In 1.7.2 this behaviour has been changed.  The client now renders "LF" in a box, and does not move to a newline.

Therefore I had to implement a workaround which transparently splits multi-line messages into multiple packets, and then sends them atomically.
Add Packets

Added definitions for the TabComplete packets -- both server-to-client and client-to-server.
Command Line Argument Parsing Fix

Fixed a bug in the way that command line arguments are parsed by the command line front-end.  The regular expression which parsed ProtocolState::Play was missing a character (causing it to match exactly one whitespace character, rather than zero to infinite whitespace characters), and therefore parsing failed where it shouldn't have.