This class implements a pipe-line of middleware, which can be attached using
the pipe() method, and is itself middleware.
The request and response objects are decorated using the Phly\Conduit\Http
variants in this package, ensuring that the request may store arbitrary
properties, and the response exposes the convenience write(), end(), and
isComplete() methods.
It creates an instance of Next internally, invoking it with the provided
request and response instances; if no $out argument is provided, it will
create a FinalHandler instance and pass that to Next as well.
Inspired by Sencha Connect.