Switch to node

*Please do not merge this PR yet. It is currently a work in progress.*

I'm currently working on changing all this Ruby code to Node. I've been working on this by re-writing each file one-by-one.

A lot of Ruby code was very un-tested and un-documented -- this will no longer be the case. *Every* public-facing method must have documentation, and whenever possible specs must be available too.

A note on design decisions: I've elected to use promises using [bluebird](https://www.npmjs.org/package/bluebird), but not async/await. If you have objections, please make your case, with code examples if possible.

Progress so far:

- [x] `configuration.rb` - Config stuff. *Done: `config.js`*
- [ ] `download_url.rb` - Convert human-friendly URLs to downloadable URLs.
- [x] `git_adapter.rb` - Deal with git. *Done: `git_adapter.js`*
- [ ] `package.rb` - Handle the install process.
- [ ] `package_downloads.rb` - Downloading and unzipping files.
- [ ] `package_dsl.rb` - The DSL packages use to describe install procedures.
- [ ] `post_processors` - Namely, the Module Manager resolver.
- [ ] `refresher.rb` - Updating the package list.
- [ ] `versioner.rb` - Pre-, post-, uninstall-commits, listing installed packages ...
Monkey patching an entire module is pretty hardcore. Is there a benefit I'm not aware of for doing this? This is why I've kept my distance from bluebird – I'm afraid I am of little help here. 

By default, the `fs` (and `fs-extra`) methods are all either synchronous or standard "error first" callbacks (thunks). It seems to me it would be just as logical to use the standard callbacks and return a promise from each of the config module's methods.