This commit changes the interface of the command functions exported by the
files in `lib/commands`. The functions now return a promise and accept a logger
as the first argument. This has several advantages
* The promise style is consistent with the rest of the code.
* It removes a lot of duplicate code.
* The command factory does not need to proxy the logger object.
The user is prompted with a question whether he would like to provide usage data
on the first start, when run in interactive mode. The current implementation
tracks calls to `install`, `info`, `search` and `uninstall` when run with at
least one parameter.
Fixes#260
Closes gh-796.
This was an huge commit.
- Allow nested commands
- Switch resolve cache in memory object cache to LRU
- Store non-semver packages in the cache
- Tweak help messages
- Various fixes and tweaks