Reogranize CommandArguments-related exceptions

* extract a CommandArgumentException interface from
ArgumentParseException
* rename ArgumentParseException to InvalidArgumentException
* add a new exception called ArgumentParseException which is not a
UserFriendlyCommandException but captures the CommandArguments state
* add CommandArguments.error() helper method to easily create the new
ArgumentParseException
* clarify javadocs related to these exceptions
* make DefaultFlagSyntax throw IllegalArgumentException(args.error())
instead IllegalArgumentException(args.failure()) if the cursor is
outside of args