Refactor RegistryKeyList

This is in preparation for page patching. The old code kept dynamic
(programatically created) and serialized keys separate. This had the
potential to reorder the key list during the application of a patch.

This is separate from the prp-patches branch to facillitate review.
Re-add plKeyImpPublic and the patching iterators.

These were removed by Cyan in version 70, when the PageInfo version was
bumped to 6.
Reimplement PageInfo Flags

This bumps the page info version to 7 since I added a flags field, which
will, once again, be used for patch pages. I also took the liberty of removing support for prp versions before 6 (old junk) to simplify the reader.