check all parent classes for hybrid properties

In order to find all hybrid properties, the code must look through all base classes. This is because the object of type `hybrid_property` is only visible in the `__dict__` of the base class where it was defined, and not in derived classes. Without this, if you have a `hybrid_property` defined in a base class (perhaps one containing several common columns and a property calculation that you'll need on more than one table) then this code wouldn't find that `hybrid_property` to show it in the API.

For more on `hybrid_property`, see also pull request #138.