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 ...
It's not actually monkey-patching -- requiring `fs-extra` will still return the same module as usual. `promisifyAll` simply automates the task you suggest -- it automatically does:

```js
return new Promise(fulfill, reject) {
  fs.doSomething('whatever', function(err, result) {
    if (err) {
      reject(err);
    } else {
      fulfill(result);
    }
  });
};
```

Nothing *too* crazy goes on there, as far as I can tell. It does have a definite advantage -- it avoids a lot of promise-related boilerplate.