*Added a 'getter' class to the baseObject module. This class is rather like Python's property class, but it only takes a getter function, no setter, deleter functions. Because of this, it only defines __get__ not __set__ which means if used like a property (as a descriptor) Python will still allow instances to override the descriptor with instance variables.
*Added an 'AutoPropertyType' class to the baseObject module. This class inherits from 'type' and can be used as a metaclass which looks for all _get_, _set_ and _del_ methods, and creates descriptors for them. If there is only a _get_ method for a particular name, then getter is used rather than property.
*baseObject.AutoPropertyObject: remove existing code and set AutoPropertyType as its metaclass. This means that now descriptors are used like they should be, rather than rather dangerous __getattr__ and __setattr__. However, instances are still abel to override a getter descriptor, if there is no setter. This finaly also means that when using super on an instance, the descriptor can be called, rather than its underlying getter or setter function. E.g. super(IAccessible,self)._get_name() can now be written as super(IAccessible,self).name