Add map, map2 and flatMap methods to Gen class
Other functions are easy once we have map. flatMap and map2