Made factory types consistent

Fixes #17 

All the factories except for the internal state factory required the
types parameters of the objects being create to be specified when the
factory was created.  The internal state factory only required those
type parameters when the objects were created by the factory.  In
practice, this design proved to be a little more effective thought not
by much.  All factories now follow this design.