Add support for running node modules

* Replace shell scripts with Grunt config
* Add nw-gyp support to grunt init to prepare modules node-webkit
* Add initial services for connecting to midi
Make grunt-cli available to travis
Add npm to fix install command
Add missing install command in grunt init
- Modified the grunt tasks so they don't minify the javascript during e2e-watch so I can step through the code when debugging. There's still an issue with this where changing the e2e-mocks does not rebuild them to the diet folder.
- Added an e2e mocks section to the index file build:js block
- Added test/mock/* to the e2e.conf
- Added test/mock/e2e-mocks.js which is supposed to replace the midi service with a mocked version if we get this working.
- Got the e2e-mocks working when running the UI using grunt server. They still don't work as e2e tests.
- Removed the mocks folder from the karma-e2e.conf file as they were not useful for the karma tests.
- Removed the e2e-mocks module as I couldn't get that to function as described in the ngMockE2E docs.
- Updated the e2e-mocks to use the module.config method to provide mock services.
- Remove the legato and node mocks as they are not necessary.
Upgrade node packages and remove unused ones
Minor dependency updates
Fix watch not reloading e2e mocks

* e2e-watch runs from app directory now
* e2e mocks are removed for node-webkit
* Enable coffeelint
Enable coffee lint for any coffee file in test directory
grunt-usemin 2.0 causes problems so rolling back
Add build status image and minor updates
- Updated e2e-watch and e2e connect tasks to use different ports than the server task so all three can be run at the same time.
- Stopped the e2e-watch task from opening the app in a separate browser window.
- Renamed e2e-mocks to midi-mock.
- Removed unused legato mock service.
- Reverted most of my previous changes to the grunt file because they broke lots of stuff.
- Fixed link to TravisCI build page in the README.
Allow grunt to build the dist while e2e-watch is running
Fix the e2e karma config to connect to the dist proxy