fix a deadlock in ParallelGroup

Previously, if a process exited before any members were ready, it would
deadlock when waiting for the other members to exit.

There were two things that led to it:

1. A member's process was only registered when it became ready.

2. The numExited check wrapping the reflected select statement was only
done at the end of an iteration. If there were no cases, this would end
up with 'select{}'.

There were two ways to fix: change #2 to perform the check at the start
of the iteration, or always register the member's processes as soon as
they're created.

I opted for the latter fix (register members immediately) so that the
failure would have all of their results collected, rather than just the
one that exited. Also refactored the for-loop to perform the check early
anyway.