\Phalcon\Validation

Largely minor changes to the Validation component that allow cphalcon's ValidationTest to run. There are still 3 PHPUnit failures though:

    1) ValidationTest::testValidationRegex
    Failed asserting that 0 matches expected 1.
    
    /phalcon-php/test/cphalcon/ValidationTest.php:252
    
    2) ValidationTest::testValidationRegexCustomMessage
    Failed asserting that 0 matches expected 1.
    
    /phalcon-php/test/cphalcon/ValidationTest.php:284
    
    3) ValidationTest::testValidationStringLengthMaximumCustomMessage
    Failed asserting that two objects are equal.
    --- Expected
    +++ Actual
    @@ @@
     Phalcon\Validation\Message\Group Object (
         '_position' => null
         '_messages' => Array (
    -        0 => Phalcon\Validation\Message Object (...)
         )
     )
    
    /phalcon-php/test/cphalcon/ValidationTest.php:638
[The methods in ArrayAccess allow `$offset`/`$index` to be mixed](http://php.net/manual/en/class.arrayaccess.php#arrayaccess.synopsis). With these checks in, code that would have worked on the original Phalcon would have failed here - particularly something as innocuous as `$messages[] = $whatever` or `$messages[0]`, as `$index` would be an integer. Maybe reintroduce it and allow `$index` to be either string or integer?