Change _LazyGroupContentManager.get_record_stream() to invalidate the nodes.
This means that records are genuinely only valid until you go to the next one.
This breaks the reference cycle with the manager, and drops peak memory by a decent amount.
(as otherwise we have to wait until gc.collect() runs).
Also, change get_bytes_as() so that it caches the bytes (though this cache is also removed
when we go to the next object).
This is mostly useful for CHK pages, which get processed at several layers. The
get_record_stream() code uses it to determine what to send next, and the
insert_record_stream() needs the raw bytes to put into the target repo.
This saves an extract() on every chk page during 'pack'. apply_delta is rather fast,
but there is no reason to waste calls.