Remove phantom type parameters from pipe interface.

This produces more code in the implementation, but a cleaner API.