[GROOVY-5948]  memoizeAtLeast and memoizeBetween don't cleanup garbage-collected SoftReferences

Both Closure's methods memoizeAtLeast() and memoizeBetween() try to implement a memory-sensitive cache using SoftReferences to the memoized values. However studying the implementation I've noted that the SoftReference instances are not being registered with the ReferenceQueue, so when these SoftReferences are cleared by GC, they are not being removed from the memoization cache.