Implement flexible target specification

See commit message.
It feels like a target like `thumb-*-*` is going to die here - where it would normally be interpreted into `Arm` but still signalling to LLVM that we want the thumb instruction set.