Port Atom's Build System

This PR ports the build system from Atom, but making it more generic (and removing most of the hard-coded uses of the name 'atom'). All of the parameters given in the build are now built around fields in the package.json, the most important ones being `name` (a name for your app's build stuff), and `productName` (your executable name i.e. Atom.app).

Note that this PR doesn't change the name of "Atom Helper" because it is currently hard-coded into Atom Shell (this can most likely be fixed too however). This PR creates the dumbest Atom Shell app possible - in future PRs we'll build a bit more of a framework around windows:

![](http://cl.ly/image/2N3D1F2E060A/content#png)

This PR also most likely does not have a functional Linux build around building RPMs / DEBs, will fix in a later PR.

## TODO:

- [x] Verify build on OS X
- [x] Verify build on Windows
- [x] Verify build on Linux
- [ ] Fix `set-version-task` on Windows
A simple demo app shouldn't need `generate-module-cache` task.