Support finagle connection pooling

This patch leaves the Client able to be used with a user-provided
ServiceFactory, for configurable hostConnectionLimit, timeouts,
logging, etc.

Fix Client.close() to close its underlying service rather than the
service factory (which was a noop).

Add Client.resetConnection(), which can be used to reset a connection
back to a state before any statements were prepared.

Add support for "DISCARD ALL" to Connection and Messages in support of
resetConnection().

Move the authentication proxy and errors proxy to
prepareConnFactory (from prepareServiceFactory) so they're
connection-scoped rather than factory-scoped.