Improve keys.js and use if for asyncEach
make first() and last() work for objects as well as lists
simplify once, and do not wait a tick before firing
add time.ofDay