allow switching component creation from dictionaries to factory functions
The basic idea here is that dictionaries are fairly heavy when used as a factory. Registering factory functions instead makes the jobs a lot lighter. For the CP algorithm test job (on data) the savings are:
~600 MB in memory ~22s in startup time one major root dependency eliminated
The first draft also included a function for preloading all the dictionaries. I removed it to allow the user to define their own.
Edited by Nils Erik Krumnack