Compute cached

I have a couple more things to do, but I think it is worth starting the review process on the new memoize scheduling directive.
How temporary is this? Are we going to merge it and fix it later, or did you want to keep working on it before merge?