reorganize imports
enable heartbeat and auto-reconnect
fix incorrect injection of error messages

The error messages are not formatted as HTML and need to be injected
with textContent rather than innerHTML.

Thanks to Fabio Bonelli (@bfabio) for discovering this issue.
Change phase(syntax) to phase(plugin)

The former is deprecated and will be removed.
Properly handle invalid UTF8 output (fixes #15).
Allow the evaluate end-point to separate output from compiler
vs. program.

Specifying separate_output=true (in JSON) in an evaluate request will
mean the return value is then `{ "rustc": <output of the compiler>,
"program": <output of the program> }`.