Add map() and flatmap()

As discussed in #11.
:boom: nice!