Discover plugins to be executed

This branch is for plugin discovery.

there's MonadComprehensions which should make this sort of thing more readable