Some modules need to reference each over to do their duty e.g. ModuleForward has a reference on ModuleRouter to deal with SIP requests that contains GRUU in their request URI.
Before this commit, modules could reference another one by targeting its name. But that could cause problems since modules could be replaced on starting by a module with another name which had been brought by a plugin.
This commit adds the ability to find a module basing on its function (e.g. Router, Registrar) instead of its name. Then, relationship between modules can be ensured should the dependency module have been replaced.