Change `&` to be a borrow operator.

Change the address-of operator (`&`) to a borrow operator. This is an
alternative to #241 and #226 (cross-borrowing coercions). The borrow operator
would perform as many dereferences as possible and then take the address of the
result. The result of `&expr` would always have type `&T` where `T` does not
implement `Deref`.
That's correct, as long as there is some more context to infer the type from. In practice you sometimes need to give the inferencer some hints