Add convenience "hasChanges" flag to SharedData

This relieves systems of the burden to remember the last time
they updated their internal state. They can now just query the
hasChanges() method. When they are done, they should call
untouch() to reset the flag.
Update current systems to make use of SharedData::hasChanges()
Clarify documentation of SharedData::touch() et. al.
Merge pull request #23 from Revolutionary-Games/shared_data_has_changes

SharedData::hasChanges()