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
Could you also add a test for `tests/a.rs` and `tests/b.rs` and run `cargo test --name a`? It may also be worth adding `src/bin/a.rs` and `tests/a.rs` and make sure that `--name` doesn't generate an error, running both is ok to me.