Discover plugins to be executed

This branch is for plugin discovery.

I've always thought it's gonna be a concatenation? That's how I expect unix tools to work.

Re syntax, many people do prefer ML style chaining like what Thomas did here and that's fine, but if you really like list comprehensions, you can write your monadic chaining like:

```
[ d | dir <- getDirs, exist dir, d <- concat dir ....]
```

something like that, either style has appropriate uses, ML chaining is fine