Ensure that the timer handling code processes a bounded number of timers
Ensure that the timer handling code processes a bounded number of timers

Previous commit to address the unbounded number of timers was
incomplete -- it neglected to account for assumptions made within
SystemTimer::Cancel(), and within allocating a new timer.  This commit
performs two things:

* It restores the timer code to the state prior to commit
  99f546478fccf259827c9426823dcb9223ffffaa

* It bounds the number of timers executed within the
  Timer::HandleExpiredTimers() by constraining the number of timers
  processed to the size of the timer pool.

This approach offers the following advantages:

* Fallback to the old code with the minimal changes

* No data-structure-related changes as compared with the old code.
  The policies for maintaining all queues are the same as those prior
  to 99f546478fccf259827c9426823dcb9223ffffaa.

As compared with the "eager" bounding of the expired timers, the
principal shortcoming of this commit is that we may prioritize a few
more timers than in the previous method; this may lead to a slightly
longer response event response time.

openweave/openweave-core,openweave/openweave-core,openweave/openweave-core,openweave/openweave-core,openweave/openweave-core,openweave/openweave-core