Refactor the codecs for extension. (#219)
Refactor the codecs for extension. (#219)

Motivation:

As part of the work in #214 we're going to need to update the
HTTP2ToHTTP1 codecs. These need to be replaced for the new channel
pipelines. The core of the logic will be identical in both cases, so
let's start by factoring that logic out into some nice standalone
objects that we can reuse.

Modifications:

- Pull out the base codecs into structures.
- Rewrite the main codecs in terms of these new structures.

Result:

Easier extension points.
apple/swift-nio-http2,apple/swift-nio-http2,apple/swift-nio-http2,apple/swift-nio-http2