Don't directly depend on components to wire

Change API from magical side-effect require to exporting a function that
accepts the modules to wire together. The module now has no
dependencies, instead you pass in the components to wire up.