The protocol factory is a singleton that is always in existence - it manages the creation functions for different protocols.
Protocols should each provide a factory method that creates the protocol from a list of strings - these being the fields (as divided by colons) of the protocol id.
def __init__(self):
def create(self, protoId):
def register(self, protoTypeId, protoFact):