Introduce circuit breaker middleware

Circuit breaker watches the error condtion to match, after what it activates the fallback scenario, e.g. returns the response code.
I think this should fallthrough to the `stateRecovering` case. As it is now, we handle this request as if we are still in `stateTripped` and only enter `stateRecovering` logic for the next request. Maybe not a big deal since it's only one request, but I can imagine it being confusing if, for example, someone is manually testing a circuitbreaker condition with a small number of requests.