Redis backed circuit breaker

Lots of changes to the base gem:

- Redis-backed failure state
- Optionally store the breaker state at the mixed-in-to class' class level, rather than in an instance (this is required to maintain the state of the breaker across requests)
- Several bug fixes

Will be required for MP PR xxx