Add Map/Splay.modify_opt

Note: SplayTree is not splayed on deletion, hopefully it's correct.
Add IMap.modify/modify_rec/modify_opt

Note: I had to make public AvlTree.create for better performance when
modifying a singleton (which I believe is quite frequent)
Add List.modify/modify_def/modify_opt for association list

Obviously performance is less of an issue here.
Add Multi{P}Map.modify and friends

No tests since that's just wrappers around {P}Map
Add Hashtbl.{map,filter,filteri,filter_map}_inplace