UFSAssociationTable added for multi-class tracking

UFSAssociationTable now handles multiple UFSAssociation objects to keep
track of more classes that handle notifications.
.associations property's initialization was moved to an override of
-init.
CPDistributedNotificationCenter was added to the hooks.
After some investigation, -deliverNotification:userInfo: takes an
NSString * as first argument rather than an NSNotification * as selector
name does not suggest this. (Could have been
-deliverNotificationWithName:userInfo:).
Static to dynamic string

Swapped literal NSStrings to NSStringFromClass([self class]) to allow
easier copy-paste, while not minding the actual name of the class.
NSString to Class swap

UFSAssociationTable methods that required (NSString *)className were
changed to (Class)aClass. Earlier calls to NSStringFromClass([self
class]) are now [self class], taking advantage of previous commit.
Created untested macro.
Added CPDistributedMessagingCenter

CPDistributedMessagingCenter is a new member of the table. Its
-_dispatchMessageNamed:userInfo:reply:auditToken: method prevents a
successful compilation at the moment.
Macro migration

Migrated all calls to
[[UFSAssociationTable sharedInstance] setAssociation:XXX withObject:YYY
forClass:[self class]]
to the macro
UFSAssociationTableAdd(XXX, YYY)