Add delay and timeout to core promise, reimplement when/delay and when/timeout using them. Split applicative and function promises.  Improve iterator promise.
Add iteratorPromise.filter for lazy async filtering.