Refactored the streaming scheduler and added StreamingListener interface

- Refactored the streaming scheduler for cleaner code
- Implemented the StreamingListener interface, similar to SparkListener. The streaming version of StatusReportListener prints the batch processing time statistics (for now). 
- Refactored streaming TestSuiteBase for deduping code in the other streaming testsuites.