Convert disk cache to use Okio.
Merge pull request #1023 from square/jw/okio-lru

Convert disk cache to use Okio.
Support overriding content type via explicit header.
Merge pull request #1028 from square/jw/content-type-override

Support overriding content type via explicit header.
Update MultipartBuilder to support content length.

In order to track content length we need to convert the headers and boundary of a part to a Buffer eagerly. The length of this Buffer plus what each part's RequestBody reports allows tracking what the overall content length will be. The presence of any streaming body means the length of the entire multipart request is unknown.

Common parts of the boundary and header have been changed to raw byte[] to save the cost of allocation and UTF-8 encoding.
Merge pull request #969 from square/jw/better-multipart

Update MultipartBuilder to support content length.
Request URI's have a dependency on the request URL (if the URI is uninitialized). However, URL's can also be null if not initialized with the urlString. This fix initializes the URL properly to avoid NPE on Request.uri() calls.
Merge branch 'seato-seato/null-request-url'
Initial web socket API.
Implement message reader.

Currently the reader skips control frames.
Implement message writer.
Hook up the web socket reader and writer together.

Add a simple real-world recipe which talks to an echo server.
Use empty string for absense close reason.