Cosmetics

Get rid of some alignment that's too tight for the new functions
(and that was not consistent anyway), indent some module content,
and such futile things.
Add Hashtbl.{modify/modify_def/modify_opt}
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
Avoid useless allocation in BatSplay.cfind

Probably not a huge gain, though
Merge pull request #350 from rixed/avoid-alloc

Avoid useless allocation in BatSplay.cfind
Add functional tests of modify functions in testsuite/test_modifiable.ml
Don't copy array for BatArray.backwards enum clone

This will make it faster and enable value sharing.
Without sharing a change to the original array would be visible in the
original backwards enum, but not in its clone. This certainly is not the
expected behaviour.

See commit 8944b0d30b5d062e2f01f5bd9e73e5a9718c5a51
Merge pull request #351 from madroach/master

Change BatArray.backwards to match
Merge pull request #349 from rixed/add-modify

Add modify function and tests to keyed containers
Fix BatPervasives.undefined

Otherwise the failwith (which got type string -> ('b -> 'c) here)
will be evaluated when the message parameter is passed.
Now it gets type 'a -> 'b and is evaluated only when both parameters are passed.
Merge pull request #352 from madroach/master

Fix Pervasives.undefined for use case with optional parameter