Add a logger to CommandArguments

* add a logger (filed, getter, constructors) to CommandArguments
* make most of instance creation of CommandArguments pass a logger to it
* make DefaultFlagSyntax log the FlagArgCompleter returning -2
Allow case-insensitive use of CommandArguments.complete()

* add a boolean argument toLowerCase which, when true, makes the method
convert the rawStart string to lower case

This way all you need for case-insensitive completion is to provide an
all-lowercase potential candidates set, and set the toLowerCase argument
to true.