async_wrap/timers: remove Add/RemoveAsyncListener

The ability to add/remove an AsyncListener to an object after its
creation was an artifact of trying to get AL working with the domain
module. Now that is no longer necessary and other features are going to
be implemented that would be affected by this functionality. So the code
will be removed for now to simplify the implementation process.

In the future this code will likely be reintroduced, but after some
other more important matters have been addressed.

None of this functionality was documented, as is was meant specifically
for domain specific implementation work arounds.
async_wrap: add prove/provider flags

These will be used to give the user greater control over what events
they wish to listen to.
async_wrap: initialize at end of constructor call
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.