Fix a nasty bug in Supervisor branch restarts

We previously ignored the semantics of Temporary children when
performing a branch restart, thus crashing when trying to restart the
child (whose spec was previously deleted during our monitor signal
handling code).

We also failed to strip transient children from the list of processes
to restart, which would lead to a transient child (*and* its branch)
being restarted incorrectly if it exited normally.