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. This also
allows using a specific instance of e.g. stack-filter.