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 This code, as many of the other new methods, is a direct port from the TextHeaders class.  I took a step back when creating the new class and decided it would be a good idea to just mirror the TextHeaders as much as possible (e.g. new BinaryHeaders interface).  With that said, I haven't spent much time validating the logic of these methods, since I just assume they "work" as-is.  I think if we want to go down this path, we'll end up re-doing code review for TextHeaders as well.  I'm not against that ... just want to put some context on this discussion.  Thoughts?