add async request.

An async request can take a Pid or a function to recover the result if needed.

The process will receive a message in this format:

    {hpool, {PoolName, Reply}}

And a function will get {PoolName, Reply}. A function can be of arity 1 (only
a function is given, Or 2, A tupple {Fun, Acc} is given, to allows the
function to collect results.