[Validator] Changed NodeTraverser to traverse nodes iteratively, not recursively

In this way, the deep method call chains are avoided. Also, it is possible to
avoid the many calls to leaveNode(), which are currently not really needed.
[Validator] Wrapped collections into CollectionNode instances
[Validator] Made traversal of Traversables consistent

If the traversal strategy is IMPLICIT (the default), the validator will now
traverse any object that implements \Traversable and any array
[Validator] Merged validate(), validateObject() and validateObjects() to simplify usage
[Validator] Improved visitor names