Make NgxBaseFetch use a single named pipe

Abstract the pipe communication into NgxEventConnection, for reuse
by NgxBaseFetch and NgxUrlAsyncFetcher.

Based on Chai's earlier work, but with a few fixes discovered
while working on SPDY compatibility

Passing tests, but a lot of TODO's and things to make sure before
this is ready for a makeing a pull request out of it.