Implement flexible target specification

See commit message.
Also that built-in triples are preferred over triples in RUST_TARGET_PATH