DNM: Wip fast dispatch

This branch adds an ms_fast_dispatch interface to the Messenger/Dispatcher, designed so that you can dispatch messages directly from the Pipe threads without going through the Dispatch queue.
It also sets the OSD to make use of this interface for most operations, and switches to finer-grained locking and use of local data in a bunch of different paths to enable that.

This branch is not yet ready for merge: it needs some grooming to remove the reverts which I've left in to make @athanatos' life easier, and it should in general probably not go into the Firefly release, given the invasive nature of the changes and the subtle bugs it needs to avoid by replacing the easy-to-use Big OSD Lock with finer-grained locking on a bunch of different structures.