New items are created by first get()-ing them from the pool. It would be
inefficient to let such a get() immediately query the real cache (because it
may not be meant to retrieve real data, but just to set a new value)
Instead, every Item returned by get() will be a "placeholder", and once the
values are actually needed, this object will be called to go do that (along
with every other value that has not yet been resolved, while we're at it)