Package objtest is the conformance suite for the cacheobj contract. It IS
the contract: any Cache[*Val] built by the supplied factory must pass
Run, the same way cachetest.Run anchors the byte-cache family.
A factory (not a finished cache) is taken so the suite can construct caches
with its own deterministic clock and assorted options.
Run executes the full conformance suite against caches built by f. Bounded
indicates whether f produces a capacity-bounded cache (some checks — LRU
eviction — only apply when bounded).
Val is the reference value type the suite caches. It is a pointer target so
the suite can assert reference identity (the defining behavior: Get returns
the same object that was Set).