Command line parser class.
Can parse a command line based on options descriptions like these:
const char *optlist[] {
"a? optional_arg \t -a can have an argument example: -a 1 or -a xyz",
"b: required_arg \t -b must be followed by an argument example: -b mmm",
"c+ one_or_more_args \t -c can be followed by one or more arguments example: -c 12 ab cd",
"d* 0_or_more_args \t -d can have zero or more arguments",
"e| \t -e doesn't have any arguments",
"f?longorshort optional \t -f can be also written as --longorshort",
":longopt required \t --longopt must have an argument",
0 };