Recover from connectivity problems in the async API.

This promotes HTTP engine failure recovery from HttpURLConnectionImpl
to HttpEngine. That has the nice side-effect of getting to hide some
more implementation details in HTTP engine.
Merge pull request #443 from square/jwilson_0113_job_recover

Recover from connectivity problems in the async API.