Implement `if let`

Implement the new desugaring `if let` syntax.

Fixes #16779.
I actually don't know what this bit of code is doing, so I don't know how to test it, but I assume it's only ever called on the post-desugared AST. The old `for` loop desugaring didn't touch this code, which is why I didn't add anything for `ExprIfLet` here.