Add support for registering custom circuit breaker

This PR adds support for registering custom circuit breakers besides PARENT, REQUEST and FIELDDATA.
We needed to account memory consumption of different contexts than request or fielddata caches, but of course, this makes only sense by hooking up a new circuit breaker into the breaker hierarchy.
Maybe this is also interesting for someone else like plugin developers. 
Can you replace the blanket `put` with a spinning `replace` since we need access to the old breaker? Currently there's a race condition if two threads register a breaker at the same time since we do a get-then-put, so you should be able to do:

```java
CircuitBreaker oldBreaker;
do {
  CircuitBreaker oldBreaker = breakers.get(breakerSettings.getName());
  breaker = new ChildMemoryCircuitBreaker(...);
} while (breakers.replace(breakerSettings.getName(), oldBreaker, breaker) == false)
```