Added supplemental validation capability

These changes allow a developer to define additional custom validation
criteria for a Resource by overriding the default custom_validation
method on Resource and throwing a ValidationError.

In addition to adding the feature, I also added test cases to
exercise this validation in the context of either a PUT or POST
request.