Make pipelines extension explicit

My solution for #514. We basically make pipelines extensions explicit via the extend/2 macro. The current implementation should also make it easy to implementing addition or removal of plugs at specific positions.

Thoughts are welcome.