Support SOCKS proxies.

The trickiest part of this change is the SOCKS 5 proxy implemented
to make testing possible. Fortunately the protocol is very easy, and
shows off Okio.

Closes https://github.com/square/okhttp/issues/1009
Merge pull request #1248 from square/jwilson_1227_socks

Support SOCKS proxies.
Respect the max idle connections limit.

The structure here is a bit ugly. But it permits a single 'synchronized'
block, which makes the method easier to reason about.

Closes https://github.com/square/okhttp/issues/1239
Merge pull request #1249 from square/jwilson_1228_evict

Respect the max idle connections limit.
New API for iterating DiskLruCache contents.

For https://github.com/square/okhttp/issues/853
Don't reuse ephemeral port numbers.

MockWebServer was reusing port numbers, and this was causing tests
to be flaky in some situations.
Merge pull request #1250 from square/jwilson_1229_cache_iterator

New API for iterating DiskLruCache contents.
Merge pull request #1251 from square/jwilson_1229_setReuseAddress

Don't reuse ephemeral port numbers.
New APIs to iterate the response cache.

Closes https://github.com/square/okhttp/issues/853
Merge pull request #1252 from square/jwilson_1229_iterate_http_cache

New APIs to iterate the response cache.
Cache 302s and 308s with the right response headers.

Closes https://github.com/square/okhttp/issues/1158
Merge pull request #1254 from square/jwilson_1229_opt_into_caching

Cache 302s and 308s with the right response headers.
Add a web socket call concept for connecting.

Similar to HTTP and Call, the WebSocketCall is a representation of a pending HTTP request and subsequent upgrade to speak web sockets. Upon synchronous execution you are handed a WebSocket instance for synchronous writing and also pass in a WebSocketListener for async callbacks due to reading.

The API changes in this commits also generalize WebSocket such that it's agnostic to being a client or server peer.