Add concat, compile and minify Grunt tasks

**To test this branch:**

1. Run `npm install` to install the new grunt tasks
2. Run `grunt build` to compile `src` to a new `dist` folder
3. Hold the `SHIFT` key when opening a new Brackets window and select `dist/index.html`

Notes:

* Change `index.html` to optionally include `brackets.less` vs compiled `brackets.css` via `grunt less`
* Add new `grunt build` task to compile less and concat thirdparty libs, compile, minify and generate source map for brackets src/**/*.js
* Change `main.js` to be compatible with r.js
* Minor changes to extensions and ShellAPI to account for new compile steps
* Update `.gitignore`

Source Maps:
* JavaScript source maps are supported as of brackets-shell for sprint 34
* LESS source maps are _not_ supported in brackets-shell (requires CEF with Chrome 30+). Source maps are generated and can be tested in Chrome. Verified on Chrome 31.

On my Mac, `document.ready` time is reduced from ~2.5s to ~1.4s, largely due to the compiled LESS code. Adding JavaScript minification brings `document.ready` time down to ~1.0s.

On Windows, we I go from ~3.8s to ~2.3s with LESS compiled only. ~2.0s with minification.

Still need to update brackets-shell packaging tasks.

~~This setup requires developers to install node and grunt to compile `brackets.less` to `brackets.css`. The other option would be to commit the compiled `brackets.css` to the repo. This would mean adding a 2nd generated file that I know of in addition to `/src/config.json`. We didn't pull the trigger on requiring node and grunt for contributors in the past so that the barrier to entry would stay low. Also, the payoff prior to now was not that great. I think we should reconsider changing the setup requirements for developers if we're averse to checking in compiled assets.~~

~~I have an old open pull request to port the dev env setup to Grunt here #4577.~~

UPDATE: This setup allows the current dev env setup to remain intact as far as dynamic LESS compilation. My prior assertion about requiring node+grunt no longer applies, and the case to require these tools for all developers is not as strong.

# Open Questions

1. Determine if extensions could rely on LESS mixins defined in `brackets.less` and whether or not it is desirable to so. --- ANSWER: No, trying to access variables and mixins does not work. Through our `ExtensionUtils` module, each .less file is compiled with it's own parser. Variables and mixins are only known to the parser created at startup time.