Make DDTTYLogger subclassable

Currently, you cannot create a superclass of DDTTYLogger without
creating a static instance of DDTTYLogger.
This commit allows for a superclass to be created by overriding the
sharedInstance method. The singleton pattern was changed to utilize a
new GCD method while allowing for multiple instances to be created.
This is helpful for testing when multiple instances need to be created
and destroyed during a single run.