API DataObject::validate() visibility changed to public (issue #1659)

DataObject::validate() is currently set to protected, but this means
you can't call validate() from outside the context of itself unless
you overload the method to use a public visibility and then call
parent::validate()

As it would turn out, most classes that overload this method already
set the visibility to public, so it would make sense the parent matches
that as well.
Merge pull request #2729 from halkyon/dataobject_validate_visibility

API DataObject::validate() visibility changed to public (issue #1659)