Implement flexible target specification

See commit message.
I'll admit to not having read all the context for this code - but does this also need to be wrapped in an `if !sess.target.target.options.no_compiler_rt`?