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. (though I've tried not to make too many functionality changes in this
but instead just refactor).

I've bitten the bullet and pulled in moment here for absolute timestamp formatting. Not happy about that and would much rather be using `Intl` but this seems more stable for now. 

I highly recommend only looking at the diffs for the python files and just looking at the resultant files directly for everything JS-related as there's really not a whole lot of diff going on there (and the moment i18n files cause a lot of spam in the diffs).

Summoning everyone frontend related because this is a major rework of frontend code and I'd love to see it torn apart from structural, architectural, conceptual, stylistic and any other points of view to get everyone on the same page for future large frontend projects.  That said, don't feel obligated to dig too deeply into this if you're busy.

:eyeglasses: @chromakode @umbrae @madbook @ajacksified