Duplicating data inside a run storage

Now the data inside a run storage is duplicated whenever a part of the
runstorage is duplicated. It's a little messy, but it allows you to keep
formatting whenever you duplicate a segment of data.

Next up is probably making duplicated pointers act correctly (open on
the main data), and making labels copy over as well.
pointers in duplicated data

pointers in duplicated data now correctly point to data in the original
file. The concept of the hometab is required for this, which means we
still have to have only a single main file and cannot open two files at
the same time in the same instance of the application.

Still need to transfer the Labels. Still need to transfer known lengths
of data from pointers. Still need to be able to push changed data back
into the rom and repoint to it. And a bunch of other stuff...