Adding support for HTTP/2 binary headers

Motivation:

The HTTP/2 spec does not restrict headers to being String. The current
implementation of the HTTP/2 codec uses Strings as header keys and
values. We should change this so that header keys and values allow
binary values.

Modifications:

Introduced ByteString from okio (with a few minor mods). Added new
BinaryHeaders interface and made Http2Headers extend it. Various changes
throughout the HTTP/2 codec to use the new interface.

Result:

HTTP/2 codec no longer requires string headers.
Hum...I was hoping we could avoid converting to/from byte/string for the pre-defined headers.  This seems like a common enough use case that we may want to think of a way to support this.  I think this will not only be a common use-case for the HTTP specification defined headers, but also commonly used as an extension point for users of the codec with their own custom extension headers (i.e. `x-my-application-id`)

Some options:
1. A simple solution may be to define a structure which mirrors the HTTP headers, but the types would be ByteString.
2. Could we make a CharSequence extension class to ByteString and change the types of the HTTP headers defines to this new class? So a new class `public class CharSequenceByteString extends ByteString implements CharSequence`.  Then all the `AsciiString` types in `Http2Headers` could be changed to this?  I haven't evaluated how far this would reach and if there are any gotchas with this approach.

WDYT?