If this is meant to be sugar, then can't dispatcher handle either a string, or callable or real dispatcher instance?  If you want this to be explicit, then it seems more consistent to have `dispatcher=None, dispatcher_trait=None, callback=None`.