Refactor material shader parameter animations so that they happen in response to update events, the same as component/node attribute animations. This fixes material animations depending on visibility and therefore possibly going out of sync from other updates. Add possibility to associate material with scene to make it use the scene attribute update event instead of the global update event.