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 - I'm not sure if this is what your saying but I'm not too concerned if the interfaces stay separate (not necessarily need a generic base interface).  However I am concerned about sharing the algorithmic portions of the `Default*Headers` classes if possible.  The code we are duplicating is compact and provides basic data structure functionality which is not ideal to maintain in 2 places.

>One reason is the used of String rather than CharSequence (e.g. String get(CharSequence, String))

Couldn't we just add an extra generic paramter `public abstract class DefaultHeadersBase<NameType, PrimaryValueType, SecondaryValueType> ...` and for our case the primary/secondary would be the same?

>but then that leads to problems like entries() vs unconvertedEntries(). We can't use unconvertedEntries since the interface extends Iterable>.

I'm not sure I understand. Is the concern in the use of the `headers.unconvertedEntries()` in the algorithmic portion of `DefaultTextHeaders` couldn't we just use the `forEach` approach that you used in `DefaultHttp2Headers`?  Unless I'm missing something I would argue we should do this anyways ;)