Allow workflow ports in pipelines

All objects in a pipeline needed to be typed. Activities and tasks
have types, but input and output ports needed to be defined as a
type. Normally, we streamline workflow port typing by assigning a
port from a task, but this doesn't fit with pipes.  So, this patch
allows undefined workflow ports to appear in pipelines, and they
will be typed to match the connected port