Update validation checks

Fix checks so that commands are valid no matter what order the CLI argument's options and commands are in.  More accurate error messages.  Defines the exact options and/or commands that are invalid.  Also checks for option argument validity.  Also checks to make sure the command is not defined more than once.