performance improvements:
     - fit as many messages (that are in the queue) into the MTU as possible
     - convert to NIO

In addition to any NIO improvements,
     this will offer a performance improvement when the incoming message rate per the time it takes to call blockingSend() goes above one.

Add NonBlockingStatsDClientPerfTest to ensure no messages are lost in a concurrent environment.