RFC: More flexible pipe API

@piscisaureus As discussed on IRC and outlined in https://gist.github.com/2879135 and https://gist.github.com/2879181 this makes the pipe API more flexible by giving explicit control over both pipe ends. 
I did the windows side of this first as I figured that would be the more challenging of the two implementations and would thus reveal any issues. 
You using tabs or two spaces? Also, C89 comment style (e.g. `/* uv_stream_t* */`).

@indutny is there the two spaces between end of line and beginning of comment rule in libuv?