Simplify SharedData when updating a new working copy

This removes the callback mechanism and replaces it with a
version check each time SharedData::workingCopy() is called.