Implement flexible target specification

See commit message.
https://github.com/cmr/rust/commit/48952beca772f9e829cd2c110d6c23328ad9b536 for example: 

```
/home/cmr/src/rust2/src/librustc_back/target/mod.rs:60:10: 60:14 error: macro expansion ignores token `load_specific` and any following
/home/cmr/src/rust2/src/librustc_back/target/mod.rs:60         $name!(arm_linux_androideabi)
                                                                ^~~~
```