Remove many uses of Thread.sleep() from streaming tests

This is a work-in-progress PR towards removing many of the `Thread.sleep()` calls from Spark Streaming's test suite, since I think that these calls make these tests race-prone and flaky.

I expect these test runs to fail, actually, since I uncovered some new bugs in Streaming.