Added new Validator\Result object that wraps the results of a validation

Provides ArrayObject functionality so it's backwards compatible with most existing implementations. Errors from the last validation are no longer stored in the global static Validator::$last_errors property, but are accessed via Result::getViolations()