Added a cli infrastructure

CliTool is a base class for command-line interface tools (such as the plugin manager and potentially others). It supports the following:
  - single or multi command tool
  - help printing infrastructure (based on help files)
  - consistent mechanism of parsing arguments (based on commons-cli lib)
  - separation of argument parsing and command execution (for easier unit testing)
  - terminal abstraction (will use System.console() when available)
resetting the state here makes the test hard to read... can you again maybe create a helper method, that does this

```
assertPrinted(terminal, SILENT)
assertNotPrinted(terminal, SILENT)
```