Instead of offering just the base names of the packages the uninstall
parameter completion now lists all installed versions. This makes it
easy to uninstall whats not needed anymore and helps remembering the
syntax for this task.
Example:
```
$ nimble uninstall nake[TAB]@1.[TAB]
nake@1.4 nake@1.6 nake@1.8
$ nimble uninstall nake@1.4
```
* PackageInfo objects are now cached because NimScript evaluation is expensive.
* before/after hooks now return `true` by default.
* Bugfix: when hooks weren't found Nimble would still think that a hook told it
to skip an action.
* PackageInfo now includes info about which hooks are defined to prevent
unnecessary execution of those hooks.
* Probably more.
* Moved package info reading procedures to a packageparser module. This is to prevent recu
rsive dependencies between nimscriptsupport and packageinfo modules.
* Passed the Options object to all procedures which read package info (necessary for nimscriptsupport module, to find the path of the nimscriptapi module)
* Introduced an ``isInstalled`` field to the ``PackageInfo`` type. This is a bug fix for g
etRealDir: it no longer uses the ``src`` field in the path it returns for installed packag
es' PackageInfo objects.
* Improved error reporting from NimScript evaluator.
* Renamed compiler/options import to ``compiler_options`` in ``nimscriptsupport`` module.
* Backward compatibility for .babel packages in getNameVersion proc.
* Introduced a getInstalledPkgsMin procedure which does not read package info, but only pr
ovides minimal info instead.
* setCommand "nop" no longer needed.
* Recursive setCommand supported.
* Explicit execTask procedure which executes the task explicitly instead of setting global compiler variables.