[Behaviour Change] Implement proper inheritance behaviour

The old gem behaviour is to always delegate properties that are defined in the superclass, even if the derived class implements them. This is risky when identically named columns and properties are defined in both super and derived classes.
I've redefined the behaviour such that a dynamically (lazy) resolution of procedures is performed instead, always querying the derived class to see if such a method is defined, before forwarding to the superclass. This should restore proper OOP behaviour.
As a side effect, this works with the Paranoia gem, where the deleted_at column need only be defined in the superclass.