Improved PickleFormat customizability

**Retargeted PR for issue #7.**

Two things here:

I have removed the `<: Output[_]` constraint on `scala.pickling.PickleFormat.OutputType` as it is unnecessary. In addition, the `Output[T]` trait seems to be unnecessary. At the very least it makes little to no sense for non-linear output formats.

I have alterered `PBuilder` to return `PBuilder` as opposed to `this.type` - experimentation suggests that this makes it very difficult to construct a recursive builder. I can't think why you would need `this.type`, as the `PBuilder` interface should be called by `scala.pickling` code anyways (it is an inward-facing interface). It is possible I am missing something wrt macro considerations, however this seems to match `PReader`.

Both commits compile and test.