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.
Is the copy operation necessary?  Glancing through the HPACK code it doesn't look it is modified...not sure.  I see encodeStringLiteral gets called (here is the definition https://github.com/twitter/hpack/blob/master/src/main/java/com/twitter/hpack/Encoder.java#L216) and it doesn't look like it modifies the string?  If it is not necessary could we ask them to clarify the interface to give us a better definition?