Versioned lazy loading fixes (backport from 3.1)

Backport from https://github.com/silverstripe/sapphire/pull/1178,
which also includes Jean's original fix from https://github.com/silverstripe/sapphire/commit/fbfff8df28144463fcd19a4eb923b98a432c2a46.
See http://open.silverstripe.org/ticket/7934 for context.

I think Jean's original issue is important enough to be fixed in 3.0 as well,
since it breaks history views, and in case of rollback can actually lead to
unintended data loss on user-visible records like properties on `Page` subclasses.

Technically, the data is still all there in the versions
tables, but its hard to track down and revert since we don't mark rollbacks
specifically (they're just new versions which happen to have the same content as an old one).