Make response plugins explicitly call dest.writeHead()

This also adds a 'head' event, containing statusCode and headers.
You must now wait on this event to access that information. After
the 'head' event, the normal Readable stream events occur ('data', 'end', etc).

Some other smaller fixups snuck in too.
Warn about requests that take a long time