Verify property validity more rigorously.

Properties should be validated against the head dataset unless they're
registered as only being valid for snapshots.  Currently, the set of
properties valid only for snapshots is: defer_destroy, clones, userrefs
and numclones.  All others are valid for some combination of filesystem or
volume and, therefore, require a validity check against the head dataset.