Added marker types
Removing generics from core RegisterFactory method
Added locking around factories dictionary
Refactored RegistrationKey construction