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`
Is this conditional necessary? The events are sorted ID so this should be inherently true, right?