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.

- Fast and uses (far) less file descriptors.
- Fixed urlasyncfetcher actually shutting down its fetchers
- Fixes a bug where we wouldn't clean idle connections pooled for reuse.
- Fixes a bug for requests that are finalized mid-IPRO lookup.