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.
Can we unconditionally append the comma after line 733?  This way we can just do 2 constant time calls (see below) to get rid of the 2 extra characters before the return on line 735.

```java
builder.deleteCharAt(builder.length()-1);
builder.deleteCharAt(builder.length()-1);
```