Parses a set of command line arguments into a set of properties, keyed by the argument flag. The free arguments are keyed by integers as strings starting at "1" and then "2", ... and so on.
See the class level comment for a description of the parsing rules.
@param args The command line arguments.
@return The arguments as a set of properties.
@throws IllegalArgumentException If the command line cannot be parsed against its specification. If this exceptionis thrown a call to {@link #getErrors} will provide a diagnostic of the commandline errors.