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 will avoid round-tripping through an `int`:

```go
id, err := strconv.ParseInt(n.Extra, 10, 64)
```