The new build process powered by grunt

This is the initial draft of the complete setup using grunt to power our build process. This closes #336 

###### Changes
 - The modules are now written in full common.js format where each file is an anonymous module. 

 - There is no need for `.gitkeep` files to store the `build` and temporary folder inside of test.

 - Bower is no longer required to be installed. It is run automatically when testing.

 - [Grunt.js](http://gruntjs.com/) is what is now running our build tasks.

###### Features
 - __Code coverage__: after running the tests, open `test/coverage/index.html` in your browser.
 - __Linting__: run `grunt lint` to lint all coffee files in the project. 

###### Preparation
Ensure __grunt-cli__ is installed globally via `npm install grunt-cli -g`. I'd recommend to use `nodeenv` to install global packages but its not strictly necessary.

###### Build
```sh
$ npm install
```

###### Test
```sh
$ npm test
```

Code coverage reports for the test run are generated; open `test/coverage/index.html` in your browser to view them.

###### What's Left

Grunt.js is right at the end of preparing for the release of grunt 0.4. There aren't many plugins currently that support the latest version of grunt. I've forked about 5 of them to get this running today. I'll switch out my forks as these projects become available (as I'll get to submitting PRs as soon as I get a chance).

Additional features could be added such as putting buster.js on top of mocha to automate testing against several browsers. See <http://docs.busterjs.org/en/latest/browser-testing/#browser-testing> and <http://tech.qmetric.co.uk/automating-javascript-ci-with-buster-js-and-travisci_205.html>.

###### Todo
 - [ ] Switch over to the official version of dependent packages
 - [ ] Set up buster.js to automate browser testing
 - [ ] Break out `test` and `cover` to run tests without coverage
 - [ ] Update documentation