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.
- Add search command
- Cache clean now clears the registry cache
- Fix error when accessing an unknown deep command in the cli
- Change from 'roaming' to 'path' in the config
- Change from 'canonicalPackage' to 'canonicalDir'
- Fix dev dependencies of nested packages being fetched
- Ignore invalid installed packages
- Various cache fixes and improvements
- Fix .bower.json being deleted if a package specified ignorables
- Use fstream instead of ncp to solve the EMFILE errors
- Fix cache clean command
- Lots of improvements and fixes of the Manager
- Only save json if the contents changed
- Add nom like tree to installed/updated packages
- Fix help usages.
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