This means things like "foo -r bar" or "zap -xy afile".
The offered version only handles single character option specs.
It is easy to modify the table and procedure to handle
strings of arbitrary length (using strncmp). This version
works ok and uses less space.
Provision is made for auto invocation of a usage()
routine if no args are supplied. An example is included
Options may be flagged as taking an argument or not. If
an arg is taken, this is passed to the appropriate function.
Otherwise a null string is passed.
Any non-option things left on the command line are left
there on the return to the caller. argc and argv are
adjusted as if there were never any options on the line.