librustc: Fix `expr_use_visitor` (and, transitively, the borrow check)

with overloaded calls.

This enforces the mutability and borrow restrictions around overloaded
calls.

[breaking-change]

Closes #12223.

r? @alexcrichton