Specified a text-based ProblemReporter to schedule.Validate() call.

The reason here is to avoid the script exiting with an uncaught Exception
if there are any validation warnings (which happened before the schedule
actually got written to disk).
Modified the stop time processing part of the script, to avoid several linear
searches through stops and trips inside the inner loop (instead use the
relevant Get() methods of the transitfeed library).

This results in a large speedup in processing time.
Another time optimisation by using the transitfeed API better.
 * Modified the stop times processing to grab all stop times in one go, using
   the fetchall() function.
 * Added some progress report print statements, so user knows how much of
   total # of stop times has been processed.