Add `cargo run --example` and `cargo run --bin`

This lets users run any executable from the `examples` or `bin` directories by
passing its name with `--example` or `--bin` flag.

If neither is specified, we fall back to the old behaviour (running the only bin
target in the project, failing if there are more).

Closes #538
Yeah. Also, I've just noticed that `cargo run --name` or `--example` fails if the file contains `extern crate project_name`.

Looks like the modification to `cargo_compile.rs` in the original is not behaving as desired. I'll give this some more thought.