AsciiString and TextHeaders to reduce code duplication

Motivation:

We have quite a bit of code duplication between HTTP/1, HTTP/2, SPDY,
and STOMP codec, because they all have a notion of 'headers', which is a
multimap of string names and values.

Modifications:

- Add TextHeaders and its default implementation
- Add AsciiString to replace HttpHeaderEntity
  - Borrowed some portion from Apache Harmony's java.lang.String.
- Reimplement HttpHeaders, SpdyHeaders, and StompHeaders using
  TextHeaders
- Add AsciiHeadersEncoder to reuse the encoding a TextHeaders
- Remove shortcut methods in SpdyHeaders
- Replace SpdyHeaders.getStatus() with HttpResponseStatus.parseLine()

Result:

- Removed quite a bit of code duplication in the header implementations.
- Slightly worse performance, probably because of the indirection in
  DefaultHttpHeaders.

This change will not go into 4.0 unless there's really a good reason to do so.  I'll issue another pull request for changing HTTP/2's header which will be part of master.
Replaced the header encoding with `AsciiHeadersEncoder` completely.