Batch Rollup Writes

This will cause us to batch rollup writes.

The idea is that we have one threadpool doing the actual writes. We have a RollupBatchWriter per LocatorFetchRunnable (i.e, one per shard+gran we are rolling). RollupRunnable will feed the RollupBatchWriter rollups to write. These are enqueued, and if the queue has 50 or more pending rollups, it creates a RollupBatchWriteRunnable and puts it in the threadpool.

RollupExecutionContext was modified to have both a readCounter and a writeCounter, where it previously had just one counter representing both. LocatorFetchRunnable now waits for both read completion and write completion in the same way it previously waited for the single counter.

This also resolves https://github.com/rackerlabs/blueflood/issues/115 by rescheduling a slot that fails for any reason. 

It pushes failed slots to the end of the ordered slots.