changes:
Parallax now actually moves properly on Move().
Parallax movement can now be toggled as a preference.
Merged all movable/Move() overrides for performance reasons.
changes:
Lists are no longer created every time a movable moves (!)
Lists are no longer created every time a datum is destroyed (!)
Observation events now properly clean up references.
Removed the unused task_triggered event.
Greatly decreases the number of objects that need to be created (currently 3 event handlers in total vs basically 3 per datum)
The price is a slower lookup of listeners but on a per round basis it should still be much less than the current startup time penalty.