Added noop compaction strategy
Extracted common logic out of SizeTiered compaction strategy
New compaction strategy to compact by overlappiness.
Fixing bugs
Have to have the background task be synchronized

Needs to be synchronized because it's called multiple times, even on top of
itself.

The reason that instance-level 'synchronized' works is that the lifecycle of
a compaction strategy is one per column-family per cassandra jvm.
Fixing compaction race conditions (NPE on metadata)

I had to only try to compact the ones that weren't currently compacting.
Cutting the number of comparisons down to fib(n - 1)
Renaming overlappiness to avoid overloading 'comparison' as comparable
Trying to improve compaction

Limit the candidates to 90% overlap, and take top 3 pairs.
Got the percentage calculation right finally