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
`runFirefox` use to resolve with a promise that resolves to `runDeferred.promise` since `profileDeferred.promise.then` was returned [src](https://github.com/mozilla/jpm/blob/master/lib/firefox.js#L38)