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
This may be one point of failure for the race. If you're filtering for all targets with the name "foo" with the "test" environment you'll get the example "foo" as well as the test case for "foo" itself. To help weed this out, could you add `-v` to your test cases to make sure the compiler is invoked only once when you request just one example? That should help ensure that only one target is actually compiled.