Add -X to okcurl, permitting HEAD requests.
Merge pull request #522 from square/adrian.curl-X

Add -X to okcurl, permitting HEAD requests
Use OkBuffer in spdy/3 source stream.

This isn't quite as simple as I had hoped. We still lack something
like DataInputStream/BufferedInputStream that combines a buffer with
a Source. That means there's a bunch of methods that must manually
refill the buffer before acting upon it.

I'm going to continue to migrate code, and will follow up with
changes to simplify this interaction.
Merge pull request #519 from square/jwilson_0209_okbuffer_in_spdy3_source

Use OkBuffer in spdy/3 source stream.
Use OkBuffer in http/2 source stream
Merge pull request #523 from square/jwilson_0211_okbuffer_in_http2_source

Use OkBuffer in http/2 source stream
BufferedSource.

The Source API is nice for source implementors: no annoying
skip method, no annoying available() method, just one API to
supply bytes to the caller.

But it isn't as nice of an API for source callers. It lacks
convenient APIs!

This bridges the gap. Calling code should use BufferedSource,
and implementing code should implement Source.
Merge pull request #524 from square/jwilson_0211_buffered_source

BufferedSource.
Use OkBuffer in SpdyStream.
Merge pull request #526 from square/jwilson_0212_okbuffer_in_spdystream

Use OkBuffer in SpdyStream.
Make Java 7 build requirement more clear.
Merge pull request #529 from square/jw/java7

Make Java 7 build requirement more clear.
Add body support to OkCurl. Introduce tests.
Merge pull request #527 from square/jw/okcurl-bodies

Add body support to OkCurl. Introduce tests.
Split HttpTransport in two.

The new (awkwardly-named) HttpConnection class now owns the
socket, and stays around between HTTP requests. It matches
SpdyConnection in lifecycle: it is tied to the socket.

The HTTP transport class is a dumb adapter that adapts the
protocol-specific decisions (chunked-encoding, content-length
stuff).

This should make it possible to make significant simplifications
to how connection recycling works: in a follow up change the
HttpConnection class will know when it can be recycled and take
that action automatically.
Merge pull request #530 from square/jwilson_0214_http_connection

Split HttpTransport in two.
Enforce the implicit state machine in HttpConnection.

This checks that calls into HttpConnection occur in the correct
sequence.

Once this is merged I can follow up by making HttpConnection
responsible for its own pooling rather than relying on HttpEngine
to do that work.
Merge pull request #532 from square/jwilson_0215_statemachine

Enforce the implicit state machine in HttpConnection.
Move connection pooling logic.

Previously we had this ugly, awkward release() method that
attempted to manage connection pooling, discarding streams
for caching, and closing broken streams.

Move connection reuse to HttpConnection, with policy informed
by HttpEngine. It specifies what to do when the connection
becomes idle: pool, close or hold. The connection does what
it's told.
BufferedSink.