Introduction of OutputFactory<I,O>

An OutputFactory creates an output of type <O> given an object of type <I>