Pipes cleanup

This builds on #5909. I've been combing through the pipes code to understand it and started refactoring a bit.

* Removes pipes::spawn_* functions. These are not particularly useful since they deal with low-level pipes types.
* Inlines the protocol-compiled definitions of `oneshot` and `streamp`. These are the only two uses of the protocol compiler in core and I'm inlining them so I can understand what they are doing as I work on pipes. I may un-inline them in the future.
* Removes redundant functions from core::comm
* Change the constructors to use the `new` convention