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.
@Scottmitch the more I look at AsciiString and DefaultTextHeaders, the more I think that we can just use those as-is for HTTP/2.  AsciiString is just a wrapper around a byte[] with binary accessors byteAt() and array().  DefaultTextHeaders has the ability to toggle case sensitivity.  I think that's all we need for HTTP/2.   We'll have to give the HTTP/2 headers decoder a flag to determine whether to set case sensitivity on the headers (default should probably be true).   When used with translation to HTTP/1, we'll just set the decoder to be case insensitive.

WDYT?