Decoupled prompting from the inner archicture.

Whenever a prompt is required, it's delegated to an external entity via the logger.
The logger then calls the renderer prompt() method to render the prompt.
At the moment only input, confirm and password types are implemented.

This fixes all usages of commands that require prompts with --json,
since no invalid json content is produced when prompting.
The standard renderer now uses inquirer and json renders uses promptly.

Fixes #645 and also a bug with "bower uninstall <package> --json".