Compact improvments

Hey, I'm working on getting the compaction to be a bit more awesome.

I read the docs for how bitcask is doing it and I realized that we today can't compact just one file in a simple way - so this fixes this. It also reduces the space needed when doing a compaction by removing the old files (hint + data) directly when they've been merged.