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
libstd: Fix treemap more
libstd: More treemap fixes
test: Fix run-pass tests for unsafe C functions