Add a lint for not using field pattern shorthands

Closes #17792.
Can you add an instance that doesn't have the problems? i.e. put the following below the statement you have here.

```rust
let Foo {
    x,
    ref y,
} = Foo { x: 0, y: 0 };
```

without any `//~ ERROR`'s