[WIP] Split binary versioning and module finding logic into separate modules

This work in progress starts splitting apart node-pre-gyp functions. It also adds a much cleaner method of requiring the binary module using [the latest node-bindings](https://github.com/TooTallNate/node-bindings/pull/12).

This will allow `node-pre-gyp` to only be a build dependency and not a runtime dependency. Usecase: avoid bloat. It will be safe to do `find ./node_modules -name node-pre-gyp | xargs rm -rf;` after `npm install` so that packaged applications like TileMill can avoid needing to ship dozens of node-pre-gyp's (and all its bundled deps) in its tree.