HTTP/2 Write Compression Support

Motivation:
The HTTP/2 codec does not supply an interface which facilitates doing data write compression.
Compressing data is anticipated to be a common use case and this feature is thus anticipated to be useful.

Modifications:
-Restructure the AbstractHttp2ConnectionHandler class to be able to extend write behavior before the outbound flow control gets the data
-Add classes which override the newly restructured interfaces to provide an extensible compression interface
-Add unit tests to test the new capability

Result:
HTTP/2 codec provides an interface (and default implementation) for data write compression.
`AbstractHttp2ConnectionHandler` was calling `writeSettings` in at least 2 places.  The one general case that should always check this, and I though the other place was the initial settings exchange.  This is to support the initial settings exchange, but if default variables are set up appropriately so this is not needed then that is great and I can get rid of the extra check (and extra method).