refactoring user control timer so that timer happens in each user's
client rather than in just the currently controlling user's client
(which could have lead to problems if this user had done anything
blocking). The beginning of the time syncs of the channel, and then the
countdown and timeout happens on each viewer's client.
Need to fix:
1. clearing the timeout and interval when a user leaves while they're
still in control—having this switch to the next waiter in line and
completely restarting the timer.
2. when a viewer joins midway through a user controlling—having the
timer start at the current time updated on the channel (this might be
kinda buggy, but it's not that important so long as the timer starts
for the next controlling user...)