Extension to specify per-request resource types

This is useful when you have a view to a Document that allows
inheritance because it can use request information to determine
exactly what type of resource is being POSTed or PUT.
Getting rid of overlap

@philfreo pointed out that there was some overlap in my changes and that
all these methods were not needed.  So, I removed `custom_data_validation`
entirely.  I added a test case that showed how you could accomplish
what `custom_data_validation` was doing using a simple override of
`validate_request`.  I then renamed `custom_obj_validation` to
`validate_object` to be symmetric in name and purpose with the
`validate_request` method.

One might ask why we need `validate_object` at all and my answer is
twofold.  First, validating the object is really useful because all
references have been resolved.  This is important in the context of my
other recent pull request adding full URL references for REST resources.
Second, it is not as easy to accomplish by overriding because a) it
would require you to override two methods (`create_object` and
`update_object`) but also because my goal was to do the validation
**prior** to saving the object which is wouldn't be possible with a
simple override.

With these changes, I think we have less overlap, better names and
improved functionality.
Merge branch 'extended_validation'
Merge branch 'requested_resource'