Add Data.Map.traverseKeys, traverseKeysWith and traverseKeysMonotonic

Also includes test cases