Abstract Base.prototype.prompt to support non-cli env.

This PR refers to #369

I'd like to have some feedback, especially your consideration on how to handle conflicts


- [x] Make `Base.prototype.prompt` fire a `prompt` event
- [x] Register a default `Adapter` to handle the event with Inquirer
- [x] Adapt tests for Base.prototype.prompt
- [ ] Add tests for `DefaultIOAdapter`
- [ ] Define interaction for `conflicter` (`conflict` event? `diff` event?)
- [ ] Implement and test this interaction