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.
@nmittler - The comment for this method in `BinaryHeaders` says:
>Returns and removes the value of a header with the specified name.  If there are
more than one values for the specified name, the first value is returned.

Can you clarify 2 things:
1. Is it possible for this condition to be hit for consecutive hash/name values and actually end up removing multiple entries?
2. If this condition is possible won't this also be returning the `last` index in the `entries` array?  Does that necessarily always correspond to the `first` entry the comment is talking about? It seems like `add0` is putting the new entry in `entries[hashTableIndex]` and pointing `newEntry.next = e`.