Keeping HTTP/2 HEADERS frames in-place WRT DATA frames.

Motivation:

Currently due to flow control, HEADERS frames can be written
out-of-order WRT DATA frames.

Modifications:

When data is written, we preserve the future as the lastWriteFuture in
the outbound flow controller.  The encoder then uses the lastWriteFuture
such that headers are only written after the lastWriteFuture completes.

Result:

HEADERS/DATA write order is correctly preserved.
Does this change what we should be returning?  Shouldn't we still return the `ChannelFuture` from the `frameWriter.writeHeaders(...)` call?  I seem to remember returning the promise object during the restructure in a method by mistake and the behavior was undesirable.