Add mapMaybe and mapMaybeWithKey (issue #59)

They share the implementation with filter and filterWithKey, without affecting their structure reuse.

This fixes issue #59.
Good point. I'm having problems getting cabal to install the dependencies of the benchmarks, though (a circularity involving unordered-containers), so I'll have to look at this in more detail later.