Addresses issue #2925 .  I have changed things to use Function & func , and used default values of optional functions.  Also added some doxygen doco
Merge pull request #2978 from WilkAndy/feature_2925

Addresses issue #2925 .  I have changed things to use Function & func , ...
Merge commit '4a08e08098d307eb351625f8c0ab884f74268dea'