Scheduler tests

This is the start of moving all the [current scheduler tests](https://github.com/flynn/flynn/blob/master/controller/scheduler/scheduler_test.go) up to this level so we can do away with the messy mocking / event channels and hopefully catch more real world bugs.

Rather than polling to wait for jobs to start / stop, I have added a per app SSE stream of job events to the controller which is accessible by specifying `Accept: text/event-stream` when getting `/apps/:id/jobs`
Should be fine, since the listen shouldn't drop events, they will wait until you start receiving them from the channel. What you should do is keep track of the most recent event ID and drop an events from the notify channel that are older.