add pipes api

this will be used to allow arbitrary inputs/outputs to be used in
one-off builds. clients create a pipe, and take the returned ID + peer
addr to construct a source/destination for an input/output. the client
can then download from or upload to the other end of the pipe.

changed around the flags in `main' to reflect address changes.
add hijacking api