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 `all(promises).then(function(){done();}, done);` -> `all(promises).then(done, function(e) { chai.notOk(e, "failed to finish") });`

there are a couple other places like this too