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.
Would it be worth breaking this out into 3 loops to avoid re-checking a1 and a2 against null every time.  For example we would only need to check these once outside the loop.

```
if (a1 == null && a2 == null) {
  for loop always using o1.charAt(i) and o2.charAt(i)
} else if(a1 != null) {
  for loop using a1.value[i] and o2.charAt(i)
} else {
  for loop using o1.charAt(i) and a2.value[i]
}

```