Domains bound to pipes.

This is an easier way to handle errors in pipeworks, and compromises the following changes.

1. For each instance of `pipeworks()` created we give it an overall domain.
  1. It's found in the `this.pipeDomain