Maybe we should add a method `IValidator.descend(instance, path, schema, schema_path)` or thereabouts that basically does:

```
for error in self.iter_errors(instance, subschema):
    if path is not None:
        error.path.appendleft(path)
    if schema_path is not None:
        error.schema_path.appendleft(schema_path)
    yield error
```

or something like that (hope you get what I'm trying to say, I'm le tired). Think that'd be useful?