Add uninit intrinsic
Replace init() with uninit() where appropriate
Make staged versions of the functions that use uninit
Add intrinsic declaration where I missed them
auto merge of #6354 : Aatch/rust/uninit-intrinsic, r=graydon

Adds an `uninit` intrinsic.

It's just an empty function, so llvm optimizes it down to nothing.

I changed all of the `init` intrinsic usages to `uninit` where it seemed appropriate to.
Issue the correct deref count for the implicit deref that occurs
as part of an autoslice operation (#6272).

Fixes #6272.
Remove remnants of mutable fields from mem_categorization, borrowck.
auto merge of #6373 : nikomatsakis/rust/issue-6355-perf-regression, r=graydon

Fix #6355 and #6272---we were not giving the correct index to the derefs that occur as part of the rooting process, resulting in extra copies and generally bogus behavior. Haven't quite produced the right test for this, but I thought I'd push the fix in the meantime. Test will follow shortly.

r? @graydon
core: Make intrinsics::init unsafe

as per #3920
core: Make intrinsics::forget unsafe, too
testsuite: Test that init and forget are both unsafe