adds function/after
normalized delays in tests
uses context and arguments for fn
update function/after behavior to always call callback asynchronously.

also make sure callback is executed once for each call.
add test to ensure function/after keeps reference to call context