Decorator to mark a function, a class, or a property as deprecated.
When deprecating a classmethod, a staticmethod, or a property, the @deprecated
decorator should go under @classmethod and @staticmethod (i.e., deprecated
should directly decorate the underlying callable), but over @property.
When deprecating a class C intended to be used as a base class in a multiple
inheritance hierarchy, C must define an __init__ method (if C instead
inherited its __init__ from its own base class, then @deprecated would mess up
__init__ inheritance when installing its own (deprecation-emitting) C.__init__).
Parameters are the same as for warn_deprecated, except that obj_type defaults to
'class' if decorating a class, 'attribute' if decorating a property, and 'function'
otherwise.