Allow arguments to be validated

-> Argument:
   - Added methods setValidation, hasValidation and validates
   - Modified constructor to set validation if given
   - Added property validation
-> ArgumentTest:
   - Added testValidates, testSetValidationUncallable and testSetValidationInvalidCallable
-> CommandLineParser:
   - Modified method addOption to validate the argument value if needed
-> CommandLineParserTest:
   - Added testParseWithArgumentValidation and testParseInvalidArgument
-> OptionParser:
   - Modified method createOption to allow setting argument validation
   - Modified method createOption to allow default value to be null
-> OptionParserTest:
   - Modified testParseArray to test for option with argument validation