OAK-1804: TarMK compaction

Move the compaction code to a separate Compactor class.
Avoid duplicating shared subtrees like those in checkpoints.
Drop the level option again as the overhead of running a full
compaction vs. a level-limited one isn't too high.

git-svn-id: https://svn.apache.org/repos/asf/jackrabbit/oak/trunk@1598352 13f79535-47bb-0310-9956-ffa450edef68