Use explicit WBE request state transitions

Instead of having an implicit state machine for a requests
lifecycle move toward an explicit state model and transition
set that is validated and transitioned in a more easy to
understand/reason about manner.

This also fixes a bug that was found due to a response validation
not taking into account a transition that was found due to this
stricter transition checking.

Includes a few tiny related/affected commits:

* Remove testing of request repr() and str() as these types of
  tests are not useful and we removed the repr() version of the
  request message as the base classes is good enough.
* Raise and capture a better exception and save its associated
  failure object when a request has expired (this gives expired
  requests better failure objects and associated details).

Fixes bug 1356658

Partially fixes bug 1357117

Change-Id: Ie1386cca13a2da7265e22447b4c111a0a0074201
Merge "Use explicit WBE request state transitions"