rustc: catch non-trait methods before typeck.

Closes #3973.
Ok, could you ensure that there's a test case for `type Foo = Trait` yielding an error, and remove the `FIXME` annotations in the tests?