Categorize upvars in `Fn` unboxed closures as freely aliasable

This causes borrowck to correctly reject mutation or mutable borrows
of upvars in `Fn` unboxed closures since the closure environment is
aliasable.

Closes issue #17780
Improve borrowck error when mutation of by-ref upvar is rejected

In addition to being more specific in the error message, provide a
note that suggests how to fix the problem.
Fix unit test that was illegally mutating an upvar
Add regression test for issue #17780