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`
This should probably be the last N events instead of all of them. Also the `Last-Event-ID` header should be used so that reconnects can get an uninterrupted, deduplicated stream.