NgxConnection: single event mechanism for NgxFetch and NgxBaseFetch

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 this and SPDY module compatibility

- Uses less file descriptors, I expect this to be faster but need
  measurement is needed to back that.
- Fixed NgxUrlAsyncFetcher actually shutting down its fetchers.
- Fixes a bug where we wouldn't clean idle pooled NgxConnections.
- Fixes a bug for requests that are unlucky enough to be finalized mid-IPRO lookup.
- Makes us use ngx_handle_read_event/ngx_del_event

Note: this needs a few more manual tests,  and I also want to ensure 
this uses ngx_handle_read_event/ngx_del_event correctly. That aside,
I think this is ready for review.
@jeffkaufman For the native fetcher, type doesn't make sense anymore, as it currently only has one type of event. So I added a WriteEvent overload here that doesn't need the type argument for clarity and convenience. Does that look good to you?