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.
Give Base64 lots of love.

Fix some bugs, such as decoding of input that contains lots
of padding or whitespace. See
https://code.google.com/p/android/issues/detail?id=66078

Improve performance by correctly guessing the output array
size whenever the input doesn't contain whitespace.

Build Base64 into ByteString, and expose it through there
only.

Use more reasonable names in the implementation.
Merge pull request #535 from square/jwilson_0217_base64

Give Base64 lots of love.
Merge pull request #534 from square/jwilson_0217_buffered_sink

BufferedSink.
Merge pull request #533 from square/jwilson_0215_rethink_recycle

Move connection pooling logic.
Use OkBuffer+Source in HttpEngine.
Merge pull request #536 from square/jwilson_0217_source_in_engine

Use OkBuffer+Source in HttpEngine.