Stop using C++ exceptions for stack unwinding.
auto merge of #11121 : vadimcn/rust/no-c++2, r=alexcrichton

This PR removes Rust's dependency on C++ for exception handling. Instead, it will use the unwind library API directly.

closes #10469
librustc: Change `@mut Block` to `@Block`.
librustc: De-`@mut` `FnCtxt`.
librustc: De-`@mut` the type interner
librustc: De-`@mut` the `node_type_substs` table
librustc: De-`@mut` the type context's `methods` table
librustc: De-`@mut` the `trait_method_def_ids` table.
librustc: De-`@mut` the `trait_methods_cache`
librustc: De-`@mut` the `impl_trait_cache`
librustc: De-`@mut` `trait_refs`
librustc: De-`@mut` `trait_defs`
librustc: De-`@mut` `intrinsic_defs`
librustc: De-`@mut` the short names cache
librustc: De-`@mut` the `needs_unwind_cleanup_cache`
librustc: De-`@mut` the `tc_cache`
librustc: De-`@mut` `monomorphized` in the crate context
librustc: De-`@mut` the `monomorphizing` field in `CrateContext`
librustc: De-`@mut` `CrateContext::item_vals`
librustc: De-`@mut` `item_symbols`