Adds a system for persistence to bind to things without requiring the
type to never change
## but, why?
Usually we to finalize stuff like typepaths before persisting because
that's the smart thing to do
But for volatile things like organs that are under constant refactoring
by necessity this doesn't work
So we do this to allow type changes to not throw out data
At some point we'll also need a versioning system for serialize /
deserialize and semantics on when to "full serialize" / "full load", as
an example if someone serialized an organ with 100 maxhealth but code
changes made it 200, what then?