Move shared CLI and Reporters IO into Console.

Prepares the way for reporters to be decoupled from the CLI.
Move submitBatch reporter logic into helper fn.

Prepare for creating our own console object to control
where the reporter output will go.
When JUnit requested, show status on stderr.

Reuses the FeedbackLineReporter, so it's a bit chatty right now.
Do not print lines on beat if output isn't a TTY.

Instead, print lines only on results.
Prevent double line update after each test.

updateFeedbackLine is called by handleAgentResult and by the
agentProgress event binding, resulting in a double update for
every test ran. Fix by removing the update in handleAgentResult.

This will cause coverage statistics to appear one test behind
but the final update in handleComplete will show the final stats.

Side effect: Fix spinner jitter.
Avoid calling rl.write when rl is not a terminal.

The rl.write does not appear to work when rl is not a terminal.
Workaround by writing to stdout without going through rl.
Fix JSHint errors.