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
The `.then(function(){done();}` is necessary since done must be called with no params on success or else it throws an error. It could be replaced with done.bind though.

Also shouldn't done be called on error as well?