Allow mapping to another type

Hi, love this library, but I think that the map and flatMap methods should allow you to supply a function which maps to a different type (e.g. `new Some(2).map((x) => x.toString())`), so I've implemented this. Hope it looks good!