Code tidying
Fix for position offset problems when moving/undoing populations

This includes some refactoring in systemobject.h and associated files.