Initial path validator

This PR adds two "path validator" classes.

- `JackrabbitPathValidator`
  - Uses the same logic as Jackrabbit for validating paths (inferred from some of the jackrabbit source code)
- `SimplePathValidator`
  - Less permissive than the JackrabbitPathValidator but more basic / predictable.
  - Based on the original Path validation in Doctrine-Dbal but more strict / correct. (the dbal path validator regex, `((/|..)?[-a-zA-Z0-9:_]+)+`, only requires a section of the path to be valid).
should we share the expressions we test between the 2 validators? i would expect most to be the same, and would be nice to see what the actual differences are.