Remove use of timers to expire memorized functions

This removes the user of timers to expire the results of cached
async functions. The exact firing of timers may be later than needed
in certain circumstances and this will remove the issue of the event
loop being held open in node.js < 0.10, which does not expose the
abaility to remove the timer from the event loop.