add support for installing hidden modules and using them as dependencies (WIP)

Not 100% finished yet, but getting there. I'm not confident enough yet that I'm covering everything I need to... Some code cleanup might be needed too.

Currently tackled:

 * installing a hidden module, and skipping the build for existing hidden modules
 * specifying hidden modules as dependencies via `hiddendependencies`, and resolving those dependencies correctly
 * correctly reporting hidden modules in `--dry-run` (needs an enhanced unit test)

@wpoely86: please review, since we discussed this earlier
Changed it to `force_visible`, and used `False` as a default, please check again.

The intention is to force the module name to be a non-hidden module name, regardless of whether the installed module should be hidden or not. This is used to determine the installation subdir which (for now?) matches the module name.