Generalize the type using the monad-primitive package

Generalize the type using the monad-primitive package 
(I use pipes-vector in the Cloud Haskell Process Monad, also in the pipes-safe SafeT monad)

Add fromProducer convenience function