JS testing, refactoring

Moving from Jasmine -> Mocha
Functional test in Casper
Removing faux functional tests that were written as unit tests
Updating grunt/npm dependencies accordingly
Refactoring async operations in app
Refactoring branch in app flow based on client support for pushState
Laying groundwork for some other refactoring, notably in Dispatch