Better P001Model “concrete ancestors” error message

• Now displays the list of concrete ancestors as a comma-separated list, rather than a plist of an NSSet.
• Created an NSSet+SDTAdditions class extension to convert an NSSet into a comma-separated list with one step.
Error message when trying to init an abstract class

The swizzling within P001Model_perSubclassInitFor: was guarded against affecting non-model classes, but it still possible to init one (if the class itself didn't throw an error in its init), which would cause a P001ModelSurrogate to die within usingInstanceHandleInvocation:.

• P001Model#init now checks `[[self class] isModelClass]` and throws an exception if not.
• Minor: Tiny cleanup in isSubclassAndNotBase; stores `classfor(P001Model)` in a baseClass local var.