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`
For the `Last-Event-ID`, I'm thinking of setting the `id` field to `event_id:created_at` and using the created_at to filter `listEvents`, wdyt?