Add flushTreshold to MessageToByteEncoder to optimize encoding of protocols that support PIPELINING

Motivation:

We currently have no encoder which helps to optimize for protocols that support PIPELINING.

Modification:

- Allow to specify a flushTreshold for MessageToByteEncoder which allows to optimize for PIPELINING.
- Make use of it HttpObjectEncoder and so all its sub-classes

Result:

Much better performance. Following a benchmark done with HTTP PIPELINING.

Before PR:
[nmaurer@xxx]~% ./wrk-benchmark
Running 2m test @ http://xxx:8080/plaintext
  16 threads and 256 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency    21.56ms   14.76ms 246.19ms   89.81%
    Req/Sec   195.58k    30.08k  313.55k    76.42%
  372867315 requests in 2.00m, 50.01GB read
Requests/sec: 3107673.60
Transfer/sec:    426.77MB

With PR:
[nmaurer@xxx]~% ./wrk-benchmark
Running 2m test @ http://xxx:8080/plaintext
  16 threads and 256 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency    20.27ms   14.76ms 289.46ms   91.31%
    Req/Sec   208.49k    30.81k  327.86k    74.06%
  396384084 requests in 2.00m, 53.16GB read
Requests/sec: 3303480.73
Transfer/sec:    453.66MB