Feature/write through cache perf

-> Adds in a caliper project, and a benchmark

-> Add in a HHFiltered store, we use a local mutable CMS sketch to keep track of heavy hitters, only storing those in the cache. Yields drop in read I/O by 30%
overflow is not a problem is it? You are checking `% 1000 == 0` which will be fine for negative numbers:
```scala
scala> -1000 % 1000
res0: Int = 0
```