Overhaul frontend.

This moves everything into backbone models and views and renders changes
to state client-side. The goal is to increase maintainability as the
previous code was growing unwieldy. Additionally, client-side rendering
of updates opens up a lot of options like being able to use the viewer's
timezone.