refs #54, improve the performance of hot indexing. This change does two things:
 - gets indexer to run in reverse, that is, start at the end and run to beginning
 - refines locking a bit. An estimate of the position of the hot indexer is stored,
   that is cheap to look at. Threads that use this estimate with a mutex either do
   only a quick comparison or set it to a new value. Threads doing writes (with XXX_multiple calls)
   will check their position with respect to the estimate, and if they see the hot indexer
   is already past where they will modify, they don't grab the more expensive indexer
   lock. For insertion workloads that go to the end of the main dictionary of a table/collection,
   this check should practically always pass.