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