Prioritised process loop exception handling improvements

There were previously numerous places in which the code evaluated
during `precvLoop` could be terminated by an asynchronous exception,
without attempting to handle exits properly or even call the server's
shutdown handler. Fixing this makes the already messy priority code
even more complex, but does seem to have done the trick.

[ci skip]
DPP-97 #resolve Fixed - Supervisor Shutdown Policies

Supervisors must shut down all their children before exiting
themselves. Previously we shut them down in parallel, yet many of our
restart modes are indicative of inter-relationships between sibling
children. The addition of a `ShutdownMode` provides a way to switch
to a synchronous shutdown sequence and to control the traversal (i.e.,
direction) used.