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.
I had looked at this briefly, but the interface to TextHeaders is a little difficult to make generic.  One reason is the used of String rather than CharSequence (e.g. String get(CharSequence, String)).  Ideally, the generic interface would use the "unconverted" version of the methods that just use CharSequence, but then that leads to problems like entries() vs unconvertedEntries().  We can't use unconvertedEntries since the interface extends Iterable<Map.Entry<String, String>>.

It's a bit of a rabbit hole ... I'm thinking for now it would just be better to keep the BinaryHeaders interface separate. WDYT?