Rewrite HttpObjectDecoder to use ByteToMessageDecoder

Motivation:

HttpObjectDecoders uses ReplayingDecoder which is slow compared to ByteToMessageDecoder because it needs a lot more range checks and also throws a Signal very often.

Modifications:

 - Rewrite HttpObjectDecoder to use ByteToMessageDecoder
 - Not parse headers multiple times
 - Simplify the code
 - Eliminate uncessary String[] creations

Result:

Performance improvements as shown in the included benchmark below.

Before this change:
Running 2m test @ http://xxx:8080/plaintext
  16 threads and 256 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency    23.60ms   55.06ms   1.46s    98.06%
    Req/Sec   201.02k    27.78k  266.92k    83.41%
  382439094 requests in 2.00m, 51.29GB read
Requests/sec: 3187004.80
Transfer/sec:    437.67MB

After this change:
Running 2m test @ http://xxx:8080/plaintext
  16 threads and 256 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency    22.55ms   50.97ms   1.37s    98.31%
    Req/Sec   211.27k    27.94k  271.27k    85.37%
  402093206 requests in 2.00m, 53.92GB read
Requests/sec: 3350818.60
Transfer/sec:    460.16MB