librustc: Make C functions unsafe
librustc: Disallow `&mut` loans from overlapping with any other loans
librustc: Allow `&mut` to be loaned; allow `self` to be loaned; make `&mut` loanable to `&`. r=nmatsakis