Fixes
- if required is true then no defaultValue should be supplied
- better naming of pair._1, pair._2
- change CLIOption[T].d to CLIOption[T].description using override
- use of Option[T] instead of T to better handle null values