Created by: Durman
Addressed problem description
Modules in the utils folder are not imported unless their imported from other modules (from core, ui, nodes). It also means that their register and unregister functions won't be called unless their are not imported. So it's possible to put operators into utils folder and register them there but in this case they should be explicitly imported to a module where they are used. This is done for performance of add-on startup though on this stage it might be barely measurable.
Also it fix import settings module. It was imported under add-on folder name. For example if the folder was sverchok-master
the modules was imported with sverchok-master.settings
path. Also modules imported in the settings modules could have the same root in path. In the same time all other modules are imported with sverchok
root, independent to add-on folder name. This caused problems like that #4281 (closed).
Also it includes some small optimization, removes some code duplications and unused code.
Next step is to consider to use normal import statements. Now we use importlib.import_module
function to import modules dynamically. This probably was implemented in this way to get import modules explicitly and call their register functions. But we also can easily get modules from sys.modules dictionary to call their registration functions. This is actually how it's done for imported utils modules now. Also current import approach is not friendly to use such tool as pydeps. On other hand using dynamic imports in a function is more convenient for startup profiling.