rustc: better error prints

Hi, this is inspired by the output of previous rustc output:
```
note: the compiler hit an unexpected failure path. this is a bug.
note: we would appreciate a bug report: http://doc.rust-lang.org/complement-bugreport.html
note: run with `RUST_BACKTRACE=1` for a backtrace
task 'rustc' failed at 'assertion failed: fields.len() > 0', /Users/rustbuild/src/rust-buildbot/slave/nightly-mac/build/src/librustc/middle/ty.rs:3657
```

This **unexpected failure** will scare off someone IMO, right, then such that a better error print would be better :p
I recommend `cx.sess.span_fatal(ast_variant.span, "struct variants must have at least one field");`.

I think it would be invalid to continue compilation at this point, so one must use `fatal` rather than `err` (which just prints an error message, and causes compilation to stop at some future point, but not immediately). Also, the `enum_variants: ...` warning in the error message below is only appropriate there, since that one is a `bug` (the parser shouldn't let through any `UnnamedField`s in a struct variant), while this is a user-facing message, and users don't care about the compiler-internals function which emits the error message.