Add a way to prevent callback stack-up

If you submit a callback with a *named* function, that function will be
replaced in the callback list, rather than added to the list again.

Prevents a memory leak condition when delayed jobs get rescheduled a
lot.