feat(Grunt): Switch from Rake to Grunt

Migrates the Angular project from Rake to Grunt.
Benefits:
- Drops Ruby dependency
- Lowers barrier to entry for contributions from JavaScript ninjas
- Simplifies the Angular project setup and build process
- Adopts industry-standard tools specific to JavaScript projects

BREAKING CHANGE: Rake is completely replaced by Grunt. Below are the deprecated Rake tasks and their Grunt equivalents:

rake --> grunt
rake package --> grunt package
rake init --> N/A
rake clean --> grunt clean
rake concat_scenario --> grunt build:scenario
rake concat --> grunt build
rake concat_scenario --> grunt build:scenario
rake minify --> grunt minify
rake version --> grunt write:version
rake docs --> grunt docs
rake webserver --> grunt webserver
rake test --> grunt test
rake test:unit --> grunt test:unit
rake test:<jqlite|jquery|modules|e2e> --> grunt test:<jqlite|jquery|modules|end2end|e2e>
rake test[Firefox+Safari] --> grunt test --in=[Firefox,Safari]
rake test[Safari] --> grunt test --in=[Safari]
rake autotest --> grunt autotest

NOTES:
* For convenience grunt test:e2e starts a webserver for you, while grunt test:end2end doesn't.
  Use grunt test:end2end if you already have the webserver running.
* Removes duplicate entry for Describe.js in the angularScenario section of angularFiles.js
* Updates docs/src/gen-docs.js to use #done intead of the deprecated #end
* Uses grunt-contrib-connect instead of lib/nodeserver (removed)
* Removes nodeserver.sh, travis now uses grunt webserver
* Built and minified files are identical to Rake's output, with the exception of one less
  character for git revisions (using --short) and a couple minor whitespace differences

Closes #199
doc(Grunt): documentation on using Grunt

Replaces Rake documentation with Grunt documentation.
fix(Grunt CI) execute correct grunt

Instructs Travis to remove the local grunt executable placeholder. Should prevent Travis build from breaking.
refactor(Grunt) minify files in parallel

Runs closure compiler in parallel, which speeds up minification.
refactor(Grunt) improve error handling

Make grunt tasks fail & abort on errors, failing tests, etc.
No longer catch uncaughtException in docs/src/gen-docs.js so Grunt can catch it and abort
Also use spawn instead of exec where appropriate to avoid hitting node's buffer size limit.
refactor(Grunt) Windows support

The build currently doesn't run in Windows. This creates a problem when a developer using Windows tries to contribute to Angular, but can't run the end-to-end tests.

Fix the few things that prevented the build from working in Windows:

Windows doesn't have "zip", that would be too intuitive.
Solution: Use grunt-contrib-compress instead

This speeds things up, but breaks for Windows 64bit users
Solution: Remove flag

Node can create symlinks in Windows, but you have to pass an extra "dir" option to fs.
gen-docs.js uses q-fs.js to create symlinks, which doesn't pass this needed type argument.
Solution: Add this third type option to qfs#symbolicLink, and pass the option in from gen-docs.js and writer.js
q-fs.js Pull Request #7 pending that adds this feature (https://github.com/kriskowal/q-fs/pull/7)
In the meantime, specify geddesign's fork as the dependency in package.json. Will switch back once merged.

fix(gen-docs) handle symlinks correctly in Windows
chore(Grunt) use latest q-fs

My pull request to q-fs was merged (https://github.com/kriskowal/q-fs/pull/7)
So q-fs now supports the "type" option for symlinks, neccessary for Windows support.
Switching back to the official repo of q-fs.
fix(travis) don't fail if local grunt executable already deleted

When the build runs, it needs to use the global grunt-cli. But since node_modules/.bin is in the path on that server, the grunt command defaults to the local grunt, which is just a placeholder that gives a warning to use the global grunt-cli. So we rm the local one, but the build shouldn't fail if it's already been deleted.
chore(Grunt) use latest q-fs

q-fs@0.1.35 introduced a regression with symlink creation.
fixed in q-fs@0.1.36
chore(travis) update before_script

no longer need to install testacular globally
clear npm cache to avoid issues
chore(Grunt) depend on specific commits

Grunt 0.4 is yet to be released and is still evolving.
While waiting for its release use specific, tested commits.
fix(docs/src) support for Windows when dealing with paths

docs now set section and id correctly on Windows
grunt docs task now works correctly in Windows
refactor(Grunt) speed up grunt docs task by using spawn instead of exec

Using spawn instead of exec shaves a couple seconds off the grunt docs task.
refactor(Grunt) only drop closure compiler's -d32 flag on Windows

This speeds up the build again on non-Windows platforms by serveral seconds, while maintaining Windows compat. Win-win.
refactor(Grunt) parallelize build task

Executes each build in parallel for greater performance.
refactor(Grunt) CSP and rewrites for grunt webserver

Makes the grunt webserver task handle the extras that the old nodeserver used to:

- optional CSP headers
- rewrite rules for the docs
- favicon