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
I think the nondeterminism is caused by the suffix (e.g. `b-5ceb27d70f3864a2` vs. `b-f1d1a5ae2be55cf5`) that gets added to the file name. The paths are being sorted:

https://github.com/rust-lang/cargo/pull/702/files#diff-417e085367d0ce027505dfaa26a089d3R22

I'm not sure where the suffix comes from -- is that something we can control so the order is consistent? Good point about the missing `{running}` section. When I just tried it manually, it's there, but the tests didn't complain.