Add map() and flatmap()

As discussed in #11.
Can we use our `ArrayLiteralConvertible` conformance in the flatmap closure (i.e. `{ [$0, $0 * 2] }`)?