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
if it's not specified, won't the first part of the ```and``` be ```False```? And thus the other part doesn't matter anymore?