Revised command line to use standard instead of custom syntax.

* Removed custom, JSON-like syntax for specifying columns for (compound)
  keys, scores, and labels in favor of standard-syntax options for each
  piece of information.

* Added options --scores-key, --scores-column, --labels-key,
  --labels-column and updated command line parsing.  The strategy is to
  parse everything by type and check as much up front as possible while
  preserving original command line values.  The command line values are
  then converted to appropriate types later when needed, knowing they
  have already been checked.  Converted environment to just string
  values accordingly.

* Renamed option name strings to *OptName instead of *Key as "key" was
  getting overloaded.

* Rewrote help to explain new options and better describe modes of input
  and operation.  Rewrote CLI examples for new syntax.

* Converted main to object with IO instead of merely static functions.
  Allows better handling of IO and simpifies interface: just call "run"
  with command line arguments.

* Removed obsolete FileArgument class, parseFileNameWithOptions and
  related patterns.

* Added patterns/functions for checking/parsing integers and lists of
  integers.

* Split responsibilities of reading CSV input and opening files into
  separate functions.

* Added newlines for readability.

* Updated MainTest accordingly, particularly for new command line
  syntax, Main now being object-oriented, and new names.  Revised
  construction of main and IO.
Renamed Main.MainException -> Main.Exception.

* Moved static main stuff up to be closer to other static main stuff and
  ahead of object stuff and API stuff.