added support for user callbacks that get invoked at the end of an MR job