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
@zcbenz Can you tell me more about what `generate-module-cache` does? Even though the app itself will be a demo app (i.e. not do much), we want the build system to be something people can use out-of-the-box for large apps, without having to reinvent the wheels that Atom has built already