added initial work on FreeMonad#map and #flatMap