Make PPRSingleton more generic

PPRSingleton sharedInstance now returns "instancetype" which removes the need to cast the result when getting the shared instance of a subclass.
PPRSingletonTest update to reflect new interface and to check the returned instance class.
Merge pull request #13 from davidbernard/generic_singleton

Generic singleton