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.