add `model.validate('something')` functionality

you can pass in either a single string for a single prop, or a list of
strings for a list of props. either way it returns a deferred that
resolves with an instance of `fields.CompoundError()` on failed
validation.