Find binary using the registry on Windows

- As a side effect, normalizeBinary() now returns a promise instead of
  a string
- Change runner to adapt to normalizeBinary() being async
- Add tests and change old tests
- Fallback to reading env var when registry access fails

Closes #125
nit

    var binary = sandbox.require("../../lib/utils", {
      requires: {
        "winreg": function() {
          this.get = function(_, fn) {
            fn("Failed", null);
          };
        }
      },
      locals: { process: { env: { "ProgramFiles": envPath32, "ProgramFiles(x86)": envPath64 } } }
    }).normalizeBinary;