Implement `if let`

Implement the new desugaring `if let` syntax.

Fixes #16779.
This was based on the recently-removed `for` desugaring, but I'll see if I can change that.