RFC: Remove #[crate_id]

Can you specify arbitrary metadata keys, or just the 3 keys above (except `type` isn't really metadata, it directly controls the output of the compiler, so it's probably not appropriate to use with `-C`).

And what happens if you specify a key that already exists? `type` allows multiple instances of that attribute, but the other attributes don't seem to make sense to allow multiple. And what about arbitrary attributes? I can imagine arbitrary keys you might want to specify that want the multiple-values approach, and arbitrary keys that don't.

Since `name` and `type` are special (as they control the compiler's output), but `version` is not, perhaps `version` should actually be moved into a new key `metadata` that holds key/value pairs.

```rust
#![crate(name = "json", type = "dylib", type = "rlib", metadata(version = "1.0.2-pre"))]
```