Pool: Guard Timer access inside locker lock

Instead of creating and destroying the timer every time, we just create one
and start and stop it. Starts and stops are guarded against concurrent
timer handlers by taking the global locker lock.
Pool: Lock queues when clearing them

We lock queues in all other circumstances, so we need to be consistent.
Merge pull request #202 from fluggo/194-pool-timer-race

Proposed fix for #194, pool timer race condition