Bunch of client side changes

My goal for this branch was to create a better UX when interacting with the page controls. Specifically I wanted:
* data should remain constant when the page is refreshed
* month slider should snap to month label
* data should be loaded after selecting species, defaulting to the first month
* changing species should preserve month selection

In order to accomplish these I brought in 2 new libraries, Om and Secretary. Secretary is used for push-state routing. If I'm being honest I brought in Om because it's the new hawtnezz and I wanted to learn what it is about. There isn't anything about the requirements that we couldn't do with d3 and regular event type js. If anyone objects to the use of Om then I can take it back out without too much trouble.