Add Grunt and Travis-CI

Still a bunch of linting errors inside app.js, but @Pomax made a bunch of changes there today so they can be fixed up after this refactoring patch lands.