Implement flexible target specification

See commit message.
Yup, @klutzy is absolutely right!  I guess this doesn't break stuff unless LLVM needs to be rebuilt...