constructor() {
    this._components = {}; // registered components (by id)
    this._sceneComponents = {}; // registered components (by scene)
    this._animations = []; // running animations
    this._listenerCallback = undefined;
    this._prevScene = undefined;
    this._activeScene = undefined;
  }
The MagicMove administration keeps track of the
components that have been mounted/unmounted and
between which magic move transitions should be performed.
The general use is:

- Animate on mount (when sceneActive === undefined)
- Animate on mount (when sceneActive = true) (+ set activeSceneId & prevSceneId)
- Animate on update (when sceneActive = true && prevComponent.sceneId === ) (+ set activeSceneId & prevSceneId)