Enforce the implicit state machine in HttpConnection.

This checks that calls into HttpConnection occur in the correct
sequence.

Once this is merged I can follow up by making HttpConnection
responsible for its own pooling rather than relying on HttpEngine
to do that work.
Merge pull request #532 from square/jwilson_0215_statemachine

Enforce the implicit state machine in HttpConnection.