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
Ah I think that would indeed make sense! You may want to alter `cargo_compile` to have a bit of a two-phase filtering strategy. The first pass would be the same as today (filtering based on the environment), and the second pass would be filtering based off the name requested. If `--name` was requested with `cargo run` then the only thing that should be filtered out is other binaries (and the same for tests), but libraries should stick around.

Could you add tests for these cases as well? Thanks for being so thorough with this!