Treat destinations as 1st-class services, with pointers from apps that start them [IMMUTANT-236, IMMUTANT-237]

One user-noticeable change here is they'll have to start any
destination within the app they intend to listen to it with. Before,
you could listen to a dest started by another app, but there was no
mechanism for letting the starting app know you needed the dest.
We no longer need a promise around listen [obviates IMMUTANT-217]
Attempt to handle queue reconfigurations in a non-surprising way.
Properly handle runtime force destroys.
Revert "Hack: use ispan 5.2.2 to see if it helps the CI issue."

This reverts commit 142df1945442278201d851890fafabb311660a9c.