Changed `extern crate foo as bar;` error message

I did not put the crate name in the error note, if that's necessary I'll look into it.

Closes #17709
Or, maybe it hits the `expect` below? In which case, doesn't this print something weird?

E.g.

```rust
extern crate foo as bar;
```

possibly prints something like:

```
note: expected `;`, found `as`; perhaps you meant to enclose the crate name in a string
...
error: expected `;`, found `bar`
```

Maybe you could adjust the branches a little more, which also allows for a nice error message:

```rust
let path = if self.eat(&token::EQ) {
    let path = self.parse_str();
    let span = self.span;
    self.obsolete(span, ObsoleteExternCrateRenaming);
    Some(path)
} else if self.eat_keyword(keywords::As) {
    // skip the ident if there is one
    if is_ident(&self.token) { self.bump(); }

    let last_span = self.last_span;
    self.span_err(last_span,
                  format!("expected `;`, found `as`; perhaps you meant \
                           to enclose the crate name ({}) in a string?",
                          the_ident.as_str())));
    None
} else {
    None
};
self.expect(&token::SEMI);
(path, the_ident)
```