Refactor web app

This is loosely based on the [Facebook Flux](http://facebook.github.io/flux/docs/overview.html) model.

- introduction of `stores` which take a data payload and fire events if they've changed state
- a thin layer that listens to store events and pushes updates to Ractive
- using the Flux Dispatcher to mediate between data entering the system (from server or view) and the stores