I am familiar with one mechanism for achieving the goal described in this question's title: passing a dispatchable call, which is written in its own pallet, as an argument when invoking an extrinsic that is written in another pallet, as in the Sudo pallet or the multi-sig capabilities defined in the Utility pallet. What are the other options for dispatching functions across pallets? To be specific, I would like to include a pallet, Pallet A, as Trait-bound type for another pallet, Pallet B, and then dispatch a function that is defined in Pallet B from within Pallet A.