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.
I think that it may be simplified as:
``` java
case READ_CHUNK_DELIMITER: {
    final int wIdx = buffer.writerIndex();
    int rIdx = buffer.readerIndex();
    while (wIdx > rIdx) {
        byte next = buffer.getByte(rIdx++);
        if (next == HttpConstants.LF) {
            currentState = State.READ_CHUNK_SIZE;
            break;
        }
    }
    buffer.readerIndex(rIdx);
    return;
}
```