separate compiler output from program output

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> }`.
move decoding out of the execute API