[Reviewer: Andy][From: Alex] Timer store rework

Please can you review the timer store rework. Highlights:
*  I've changed the store so it has fewer internal variables, which should prevent us getting into bad states. 
*  I've made the buckets behave more like wheels, and changed the names/commenting to match. 
*  There is a big comment in `timer_store.h` explaining how stuff works. 

Existing UTs run, and I added a couple of new UTs as well.