*****
* Added precautions against recursive calls of ``AbstractDataClass.__repr__()``, ``__eq__()`` and ``__hash__()``.
* Fixed a bug where ``AbstractDataClass.__repr__()`` would crash when passing empty instances.
* Deleted ``AbstractDataClass.__str__()``; rely on ``AbstractDataClass.__repr__()`` for printing.
* Setting ``AbstractDataClass._HASHABLE`` to ``False`` now truly removes the ``__hash__`` method.
* The frozenset stored in ``AbstractDataClass._PRIVATE_ATTR`` is now always added to class instances
as a normal (unfrozen) set.