Alter constraints of Stoppable:
Stoppable is altered so that when onStop is called all child Stoppables are guaranteed to have stopped. This makes onChildrenStopped() surplus functionality.
The motivations for this change is that it makes finding dependency errors and false assumptions easier as invariants and associated asserts are more likely to be hit in testing.
Subsequent commits in this sequence will demonstrate compile error and runtime error fixes as they are encountered.
Remove references to onChildrenStopped() and areChildrenStopped()

Move any existing code to the head of onStop for the same class. The same invariant of all children are stopped now applies there. Remove areChildrenStopped(). Subesequent commits will be based on this change.