Allows creation of singleton classes by inheriting this superclass. The interface is the same as the GOF pattern. Handles constructor parameters, but as values only, but this
can be easily worked arounded by overriding the instance() method.
Create a singleton by inheriting from this superclass. This is the classic GOF pattern and copies this interface. Handles constructor parameters as values, but this can be
worked around by including this class as a guard and overriding the instance() class method.