added first basic version of a wait queue, so modules will wait until their dependencies become available if these dependency don't exist yet, and can't be loaded from a file at the time the module is created;
optimized injectDependencies method so it only gets the full dependency chain for modules that have not been injected before;
created separate config methods to set the root path and if you want to wait for modules (use the waiting queue).