Allow the evaluate end-point to separate output from compiler

vs. program.

Specifying separate_output=1 in an evaluate request will mean the return
value is then `{ "rustc": <output of the compiler>, "program": <output
of the program> }`.
I'm nearly okay with merging this, but we need to find a more robust way of splitting than a `\0` character, since those can occur in the `rustc` output if they were part of the source code. The following string contains two NUL characters, and will be printed as-is in an error message:

```rust
fn main() {
    let s: int = "aa";
}
```