Experimental support for response-altering pipes

Where files are being served directly, adding a query string of
the form pipe=foo(a,b)|bar() will cause the response to be piped
through foo, with arguments a and b and then through bar. Each
can modify the response.

Currently supported pipes are:
status(code) - change the status code of the response
header(name, value) - set a response header
slice(start, end) - take bytes of file between start and end
                    (can be null for beginning/end)
trickle(description) - send the file slowly, with specified amounts
                       and delays. Description is a string like
                       d1:100:d2:200 where parts starting with d
                       are delays, in seconds, and other parts are
                       number of bytes to send. The current
                       implementation sends the remainder of the file
                       after the description has been exhaused, but this
                       could be improved.