fixes #26 made lock recovery more efficient by caching and batching

It might make sense to modify the usage of this cache.  Transactors that have timed out should only "not exist" for all transactions before the startTime of the timeout.  For any newer transactions, the timeout needs to occur again before the timeout cache is updated with a newer time.  This will prevent rollbacks from continuing to occur on transactors that were slow but started to function correctly again.