OAK-1932: TarMK compaction can create mixed segments

Allow a different SegmentWriter to be used with the compactor
Adjust compaction and cleanup code to make it easier to test and monitor

git-svn-id: https://svn.apache.org/repos/asf/jackrabbit/oak/trunk@1607077 13f79535-47bb-0310-9956-ffa450edef68
OAK-1931: MicroKernel.read() returns negative value

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