Add map() and flatmap()

As discussed in #11.