Refactored argument into separate class

-> Added Argument and ArgumentTest
-> Option:
   - Removed methods hasDefaultValue, setDefaultValue and getDefaultValue
   - Added methods hasArgument, setArgument and argument
   - Removed properties default and hasDefault
   - Added property argument
-> OptionTest:
   - Removed testDefaultValue
   - Added testSetArgument, testSetArgumentWrongMode
-> OptionParser:
   - Modified method createOption to use the new API
-> OptionParserTest:
   - Modified testParseArray to use the new API
-> CommandLineParser:
   - Modified method addDefaultValues to use the new API
-> CommandLineParserTest:
   - Modified testParseOptionWithDefaultValue to use the new API
Added @throws to doc blocks

+ fix typo in ArgumentTest
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
Fixed doc blocks in Argument
Fix compatibility with PHP 5.3

Using  inside of anonymous functions is not supported in PHP 5.3
-> Injected reference to test object into anonymous function (testValidates)
Fixed previous commit

Updated variable name from 'this' to 'test'
Finalized @jochenvdv's additions.

* Removed validation support from OptionParser::parseArray()
* Let Option::$argument always be an Argument
* Few minor adjustments