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 ...
Why not use [fs-extra#outputJson](https://github.com/jprichardson/node-fs-extra#outputjsonfile-data-callback)?