controller: Add stop chan to formation subcription

This lets the caller close off the stream of formation information if they have some other error upstream (for example if their output stream has been closed), fixing the previous behavior which could result in panics from writing to a closed channel.

Signed-off-by: Eric Myhre <eric@flynn.io>
controller: Move cleanup to defer

Signed-off-by: Eric Myhre <eric@flynn.io>