FIX: work out where Init() isn't being called

ReqWrap is inherited and also called directly, which means there are
several places where AsyncWrap::Init() has to be called after object
construction. I'm not fond of this, and would like to have a more
explicit way always calling AsyncWrap::Init() from the constructor.
async_wrap: pass provider to constructor

A few things have been globbed together, like ReqWrap, which will most
likely need to be broken apart later.