Redo 9f27f0eed8. Now! with not broken serialisation :D
Use a map that stores the functions, instead of them being part of the
Mirage component.
Doesn't need to initialise the variables anymore (refs. #5979).
Saves the mirages in a global to allow (de)serialisation.
Only assign values on Init, not on Construction (to allow
deserialisation).
Refs: #5985
Differential revision: D3702
Comments by: @wraitii
This was SVN commit r25079.