Implement flexible target specification

See commit message.
Followed later on with something like:

```rust
macro_rules! define_module( ($name:ident) => (mod $name;) )
each_target!(define_module)
```