Dashboard: also supervise stdin -> broadcast process.

Previously, we didn't run the code that fed stdin to the broadcaster
with supervision.  It was therefore possible for that loop to terminate
while the broadcaster and app remained online.

However, in this situation, the pipe will fill up and eventually all
involved processes will block.  This means that log entries won't be
trimmed by trim-logs.

This commit attempts to solve this problem by placing the stdin reader
under the broadcaster's supervisor.  It also runs said reader in a
non-main thread and brings the app back to the main thread: this may not
strictly be necessary, but I like the idea of not having
Broadcaster#initialize block.