Scheduler reconnects

* Update the scheduler to reconnect to the controller if there is an error or if the channel closes, waiting 1 second if more than one connection attempt has been made since the last update
* Add `ExpandedFormation.UpdatedAt` so that the scheduler can ask for only the updates since the last formation it received an event for
* Make deleted formations appear to have no processes so that the scheduler will remove it's processes if necessary
Yes, the fake controller client is incorrectly returning a nil `*error`: https://github.com/flynn/flynn-controller/blob/80290445cc8d3c9da33f9e7e08893520286af14f/scheduler/scheduler_test.go#L64

Did you test manually, or just with the test suite?