Add multi threading to building and writing

This is a three-part pull request.

1. enabling configurable threads per HTable.
2. Moving index building logic to a multi-threaded model
  * a bit involved as we try to hide some of the IndexBuilder internals away from the Indexer and into the IndexBuildManager. Its a work in progress, but does help a little bit to keep things separated.
3. Moving task logic to a more formalized construct
  * this got a bit more involved, but means we can reuse the QuickFailingTaskRunner for multiple things (and later abstract out the failure logic for the recovery writer policy as well).

Compiles locally, waiting on local test run to complete.