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
> It shouldn't be needed for the typical Atom Shell app.

Except I'm (and possibly others) am looking at atom-shell and wanting to have an extensible package system similar to atom. I assume the `generate-module-cache` would help in that case.

By the way.. this (repository) is a great idea. We should additionally make something medium-sized that uses these build features (I would want to include a package system). Perhaps a simple file browser or something of similar size. I'll volunteer to build it as I have my own plans for taking atom-shell and I'd like to help shape its re-usability (outside of atom).