`References` currently blends `Iterator` semantics, `Supplier` semantics and reference selection semantics into one class. Split it up.