support for hierarchical module naming schemes

@geimer: this should fix the problem that's blocking you right now

I might need to figure out one more thing w.r.t. the devel module name before this really works for you, I'm looking into that...
some of it can be moved yes (so I did), the `set_toolchain_info` part can not however since functionality from `easyconfig` is required, and there's no way this can be imported in the `toolchain` namespace without introducing cyclic imports

The `_initial_toolchain_instances` is moved to `toolchain.utilities`, but is needed for more than only the unit tests (you can have multiple builds with the same toolchain in a single EasyBuild run, so caching helps with speeding things up).