Add argument parsing

The three main changes/additions in this PR are:

* A wrapping class named `CLI` was added so command line output and argument parsing can be handled in different classes.
* An argument parser was introduced.
* The helper class `Executable` was extended.