Thread Pool Overhaul, Statistics, Misc. Modules

Slightly altered the chat API so that it was easier, more natural, and
more intuitive to send messages to specific users (whether based on
username or from their client handle).

Clients now track how long they've been connected.

Connections (the handles that the network stack generates for each
connected user) now automatically track the number of bytes sent and
received.

Altered helper templates in the Client class, adding constness where I'd
neglected to before.

Fixed a deadlock that would occur if a handler tried to access the state
of a Client during that client's OnLogin event.

Clients now have an atomic field for their latency.

Clients now have methods for accessing the time they've been connected,
and the number of bytes sent to and received from them.

Implemented some key/vaule pair storage methods in the DataProvider
class.  These have been implemented in the MySQLDataProvider class which
realizes that abstract class' interface.

Server OnConnect and OnDisconnect events now pass Client handles rather
than Connection handles.

ThreadPool was rewritten from scratch.  It now supports scheduling tasks
to execute in the future, and also generates various statistics that can
be used to track its progress and performance.

Fixed a bug in the authentication module that was causing the username
to be removed from 0x02 packets, preventing mods with handlers further
down the chain from processing those packets properly.

Changed the way the Basic Chat module formats chat.  It now uses bold
text followed by a colon to specify the users sending chat messages,
rather than the vanilla Minecraft angled brackets style.

The ChatModule's mod loader logging now appropriately prefixes its
logged messages with their source.

Added functionality to the keep alive module so that it collects latency
information.  Moreover its periodic functionality is now implemented
with the thread pool's scheduling functionality, rather than it actually
maintaining a worker thread of its own.

Fixed a bug in the mod loader that was causing a mod's priority not to
be respected in some instances.

Completely changed the way OnConnect and OnDisconnect are generated by
the Server component so that subscribers get the Client handle rather
than the Connection handle (see above).

Fixed a bug in Server startup code where it was possible for the thread
pool to be created with no worker threads.

Added a module which implements bans.  Banning based on username, IP
address, or IP address range is supported.  The module merely supplies
an API and subscribes to events appropriate to ensure that banned users
do not logon, it does not actually provide any way for bans to be
added/removed other than calling its API (although they can be
added/removed by altering values in the backing store and restarting the
server).

Added a module which implements server operators.  The module merely
supplies an API whereby op status can be set, unset, or queried.

Added template specializations so that tuples of arbitrary objects,
Unicode strings, and IP address objects can be placed in STL hash-based
containers.  These will likely get folded into RLeahyLib once I'm
confident in their quality.

Added a module which broadcasts login/logout events in chat.

Added a module which maintains the player list (accessed by pressing and
holding TAB) in the client.  The module maintains this list efficiently,
it does NOT use the Notchian nightmare scheme of sending one packet per
player to every player every tick.

Added a module which supports whispers.

Added a module which allows ops to access information about the server
(thread pool statistics (see above) and connected clients) through chat.

Added a module which allows ops to access information about banned
users/IPs/IP ranges through chat.

Makefile and .gitignore have both been updated to reflect the new
realities of the repository/project.