std::run: Use Result instead of condition

Previously `std::run::Process::new()` raised a io_error condition then
tried to unwrap `None`, so it caused assertion failure.

This fixes the problem by returning Result instead of raising
condition.

This also fixes rustc ICE on nonexistent `--linker`.
auto merge of #10654 : klutzy/rust/run, r=pcwalton

Previously `std::run::Process::new()` raised a io_error condition then
tried to unwrap `None`, so it caused assertion failure.

This fixes the problem by returning Result instead of raising
condition.

This also fixes rustc ICE on nonexistent `--linker`.