Remove the Waitable class again

Nice idea, but synchronously waiting on the main thread wasn't a good
idea. Bukkit started spamming warnings.
Initial version of the DatabaseResult class

This class will hold the results retrieved from the database, including
meta information such as the number of retrieved rows, number of
affected rows (for UPDATE queries) and the inserted Id for primary keys
in INSERT queries.

Documentation in the class and it holding the actual data has yet to
follow.
Add the PendingQuery class

This class contains the information for queries which are either pending
to be executed on the database server, or which have been executed and
still need their promises to be settled.
DatabaseConnection.connect() returns void

Because we now connect asynchronously, returning something from the
connect() methods does not make sense.
Change DatabaseConnection to be an interface

Callers should not care about the implementation details of this class,
which will be database (driver) dependent.
Barebone implementation of DatabaseConnectionImpl

This is the class which will be implementing our backend for MySQL
database connections.
Create the inner DatabaseThread class for the DBC

The DatabaseThread class will own the connection with MySQL and is
responsible for servicing all queued up queries.
Control the DatabaseThread lifetime with DBC

DatabaseConnection.connect() will now start the database thread, whereas
DatabaseConnection.disconnect() will terminate the thread, waiting for a
maximum of five seconds.
Implement the PendingQuery and finished query queues

These contain the queries which will be executed on the database thread,
or have already been executed and need their promises to be settled on
the main thread.
Implement connecting and disconnecting from the actual database

These methods live on the DatabaseThread object and will be invoked on
that as well. They use the mLogger instance in its parent class to
communicate failures (this is guaranteed to be thread-safe).
Executes queries on the DatabaseThread

While the actual results aren't being stored on the DatabaseResult
object yet, basic meta information is being made available to the
caller.
Limit queries to a maximum of 10 seconds execution time

Queries which take longer are blocking the rest of the world, which is
just plain rude :-).
Implement automated reconnections w/ exponential backoff

This allows us to reconnect to the MySQL server if the connection is
lost for whatever reason. Back off is done exponentially (with a maximum
of 128 seconds) to make sure that we won't hammer the database server
with incoming connections.
Output the retrieved row count in DevelopmentLog

This allows me to see whether any rows have been retrieved from the
database.