Add sql query circuit breaker.

This adds a sql query circuit breaker which tries to estimate the amount of memory needed by a certain operation of a query to prevent a OutOfMemory exception.
It raises a CircuitBreakingException if the limit exceeded.
The default limit is 60% of the available HEAP.

The limit can be configured using the ``crate.breaker.query.limit`` and related ``crate.breaker.query.overhead`` settings.
I think you could use the bytes from addBytes as argument to flush and then just use a local variable to avoid all the .get() calls.

I think the way this method currently works it isn't really thread-safe.

For example:

Thread1:   addEstimateBytesAndMaybeBreak(  flushBuffer.get()) //   5 bytes.
Thread2:   flushBuffer.addAndGet (6) and gets into flush() 
Thread1:   totalBytes.addAndGet( flushBuffer.get() ) // return 11 bytes
Thread1:   flushBuffer.set(0);
Thread2:   if (flushBuffer.get() == 0) -> returns

now totalBytes and whatever the breaker has internally is different.