RunContext enhancements

- [x] Moves `env` and `generator` instatiation to `_onReady` so user have a chance to alter the environment to the a specific way and expect `env` and `generator` reflects such settings.
- [x] Emits `ready` event right before calling `generator.run()` to allow any
last minute operation on the `generator`
- [x] Deprecating `onEnd`, instead emits 'end' event as `generator.on('end')`
- [x] Implement `withGenerators()` to mock generator dependencies
- [x] accepts optional second parameter in `inDir` as a callback function.
- [x] rename `_holdExec` to `async`
- [ ] Update yeoman.io docs