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.