Fix and clarify fmap's contract
The data structure 'map', once 'mapped', was no longer a map. This commit fixes it.
+ Deal with None value which is returned as is.