Fixed LoadGenerator to export stats to JMX.

The bug was that 2 instances of A?SyncClientWorker were created. One was
used to export stats, the other to do actualy thrfit calls. The result
was that the exported counters were always 0.
With this fix, only one instance is created and stats are shown
correctly.
Add a clientId to ClientWrapper in AsyncClientWorker

This helped me to debug an AsyncClientWorker issue that was causing it to stop sending requests after ops_per_conn requests+1 had been sent.
Fix an AsyncClientWorker bug that causes it to stop sending requests
Fix a typo

Change recordRequestReceived => recordRequestSent
Fix an AsyncClientWorker bug that it asks the wrong channel if it has an error
[swift2thrift] Treat ByteBuffer (in addition to byte[]) as binary
Add client event handlers
Add client stats on top of client event handlers
Upgrade to airlift 0.78-SNAPSHOT
Reuse same protocol/transport for all client calls on a connection
Add some additional config options to ThriftServerConfig

Includes:
- set a custom executor
- set maximum # of connections
Rename client-idle-timeout to idle-connection-timeout, and set a default value
Add config for accept backlog
Allow binding custom thrift codecs by class
Add bindings for ThriftCatalog and ThriftCodecFactory

This is mainly to allow binding of custom codecs that need a ThriftCatalog injected. Was trying to get this catalog via injecting a ThriftCodecManager and using codecManager.getCatalog(), but this doesn't work if you want your bound custom codec to be in the internal codec set used to create the ThriftCodecManager (because it creates a dependency loop).
Merge pull request #106 from andrewcox/custom-codecs-by-class-2

Add bindings for ThriftCatalog and ThriftCodecFactory
Stop executors even when server was never started
Merge pull request #107 from andrewcox/clean-shutdown

Stop executors even when server was never started
Code cleanup: consolidate calls to the transport's flush() in client code

This also fixes a header protocol bug, because flush must be called on the output protocol's transport (which may be a wrapper around the TChannelBufferOutputTransport that was being flushed before this change)
Code cleanup: move setMaxFrameSize next to getMaxFrameSize in ThriftServerConfig