Circuit Panels

* Adds a CircuitBreaker interface
* Adds a Circuit Panel (a map of string names to a CircuitBreaker)

We could take this a bit further:

* [x] `BreakerTripped`/`BreakerReset` callbacks on a Panel that pass the circuit breaker name.
* [x] Rename the package to `circuit`.  `circuit.Panel`, `circuit.Breaker`, `circuit.NewTimeoutBreaker()`. (defer to future PR)

Note: includes #9 
I think I'd rather see a frequency breaker implemented that handles resetting the failures rather than providing this. I don't think it makes a lot of sense from the outside of a circuit breaker, it's part of internal details of a certain kind of circuit breaker. This seems separate from an implementation of panels.