Schema indexing changes

* Removed SchemaIndexProvider mutable state
* Cancelling an index population job just initiates cancel and awaiting
* its completion happens outside of the "flip lock". Resolves a deadlock issue.
* Minor IndexPopulator interface changes
* Nice Future/Latch utilities
* HA test for what happens to index population jobs when switching role
* Adds contract checking to IndexContext