Add mapMaybe and mapMaybeWithKey (issue #59)

They share the implementation with filter and filterWithKey, without affecting their structure reuse.

This fixes issue #59.
It's a really annoying problem I hope @kosmikus will address one day. In the meantime you can install them "manually" i.e. instead of

```
cabal install --enable-bench --only-dep
```

you can just list them manually, like so:

```
cabal install Criterion hashmap ...
```