Add Enum.flat_map

Returns a new collection appending the result of invoking `fun` on each corresponding item of `collection`.
Given function should return a list.

This similar to Scala's ``flatMap``, Haskell's ``>>=`` and it uses Erlang's ``lists:flatmap`` when collection is a list.