Fix a few goroutine leaks

- enable keepalive on client connections, so we don't keep subscriptions around after a client dies
- fix a bug in the `source`'s loop, which caused it to never terminate after an instance was stopped.

/cc @xla @grobie