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`.