Make the "undo_function" bit optional.

The "undo_function" part of callbacks was required, even though it
might not be required for functionality... Make it optional, so we
don't end up making/using no-op functions to avoid doing anything.
Merge remote-tracking branch 'origin/7.x' into 7.x-USDA-41
Merge pull request #473 from adam-vessey/7.x-USDA-41

Make the "undo_function" bit optional.