Add a lint for lets/matches which won't do anything

in other words irrefutable ones without any bindings. This will be useful once the semantics of `_` in patterns changes to "ignore" instead of "drop" (#10488). Closes #11088.

For now it defaults to "allow", so I don't think there's any harm in this going in before #10488 itself, but please **DON'T** r+ this unless you're in a position to decide (or it has been decided).

If I run the tests with it set to "deny", things break in all of the expected places, with the exception that `deriving` code for unit structs also appears to trigger it. That should presumably be fixed before it gets changed to something other than "allow" (along with of course the expected failures).