Replaced gocept.cache with Mike Boers's expiring memoization decorator and included the BSD-licensed source here