Clock tracking

Rather than only being able to handle a single DataSource, Viewer should be able to handle multiple data sources, and keep track of which one is in charge of the clock.  Unit tests have been added for the new behavior.