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.
Add assertions and death tests for unlocked states

Terminate the program when trying to access stable or
workingCopy buffers when the state is not locked properly.
Merge pull request #33 from Revolutionary-Games/shared_data_improvement

Simplify SharedData when updating a new working copy