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

Result:
Performance improvements.
`value.toString()` can be simplified to `value`.