Created the concept of ISubscriptionManagerProvider

Created the concept of `ISubscriptionManagerProvider`. This would allow someone to create their own subclass of `SubscriptionManager`, if they want to, for example, cache the class lookups somehow.