Add pluggable validation for PathBuilder

Fixes #975
I think we should also support is/has prefixed getters if the propertyType is Boolean.
we only pass in Boolean.class, so we can't detect if it is actually boolean, so what is the best way:
- If Primitives.wrap(propertyType).equals(Boolean.class) beforehand
- Catching NoSuchMethodException and if Primitives.wrap(propertyType).equals(Boolean.class): retry with is{property} and has{property}?