add getResolvedObjectClass()

This returns the result of SwatDBClassMap::get() on the class set in getObjectClass() by default, which is what we want most of the time.

For cases where we can't depend on the SwatDBClassMap inheritance mapping, for example where there are multiple subclasses of the same parent object, this method can be subclassed to return the object you actually want.
For consistency with other commonly subclassed methods, rename loadObjectData() to loadObject()