Closed connection throws exception on further access

When a connection is closed, the connection object throws errors
when another method is called on that connection object.

Added a test to verify that the exceptions occur when a connection
is closed and another method is called.

Fixes #32
Connection is not closed prematurely until a query is complete

Closing a connection explicitly would close the connection immediately
rather than wait until ongoing operations were complete on that
connection.  The close operation now waits until all other operations
are finished.

Since there are legitimate times to forcibly close the connection
immediately, a new (optional) flag has been added to the close call:

conn.close( immediately, callback )

If the immediately parameter is supplied and is true, then the
connection will be closed rather than waiting for pending
operations/queries.  Note: if immediately is supplied but is not a
boolean, then an error is thrown.

close can still be called with either nothing or a callback as before.

Tests added to verify the new parameter.

Fixes #32
Connections closed when an error occurs using sql.query or sql.queryRaw

When sql.query or sql.queryRaw were called and an error occurred during
processing, the connection was not closed and would stay open for several
minutes until collected.  Now the connections are closed immediately.

Also added a try/catch around a user's callback for query and queryRaw so
if an exception is thrown, the connection is closed.  The exception is
then rethrown with additional information.

The try/catch will be upgraded to use domains in the near future.

Fixes #121