[[misc-customtypes]] libfoundation: Check custom type func pointers before call

Some custom types may not wish to implement all function pointers in
the corresponding `MCValueCustomCallbacks` structure -- for example,
some custom types may not support mutability and thus may not
implement a `mutable_copy` function.  Furthermore, additional members
may be added to `struct MCValueCustomCallbacks` over time, requiring
every custom type to be adjusted unless the custom value support code
can cope with NULL function pointers.

This patch adds default implementations of all the functions defined
in `struct MCValueCustomCallbacks`, and calls them for any type that
leaves the corresponding function pointer as NULL.
Merge pull request #1617 from peter-b/misc-customtypes

[[misc-customtypes]] libfoundation: Check custom type func pointers.