Do compaction in the calling thread instead of interrupting the eviction thread

Michael, this branch has the obvious set of changes to do compaction in the calling thread instead of interrupting the eviction thread.

There's nothing tricky here, but there's also nothing to prevent a checkpoint thread and a compaction thread from running at the same time.

I don't think a checkpoint thread in WT_SYNC_LEAF mode will collide with compaction; both threads of control are walking the cache, acquiring hazard pointers, that should be safe.

A checkpoint thread in WT_SYNC_INTERNAL mode is a little scarier.    I think it's safe, but I'd appreciate it if you'd consider it?

Thanks.

@michaelcahill