Implement full synchronization using parallelB.
No everywhereM: Recurse explicitly in unifyExits.

unifyExits was broken because I was (still) using the SYB-style
everywhereM from RepLib. It happily found every term of type
[ExitExpression] inside the given Behavior... including all suffixes of
the list I actually wanted, which were transformed bottom-up.

As long as I only tested with 0-length or singleton lists of exit
expressions, this bug didn't matter, because replacing the nil at the
end of the list with another nil didn't change our ability to rewrite
the rest of the list. Any list of two or more expressions, though, could
get incorrectly rewritten from the tail backwards and break the
transformation.

Now that I've made the recursion explicit, I've fixed a couple other
things:

- Instantiate nodes can't be trivially merged with Exit nodes, so for
  now we decline to apply any simplification if we encounter an
  Instantiate.

- Sequence nodes must not have any Exit on their left-hand side
  rewritten during unification.
Introduce `fromMaybeT`: fromMaybe for MaybeT.

Just a convenient shorthand.
samples: Tell the OS which message completed.

This illustrates the need to construct a closure to carry intermediate
values across callbacks.