rt: don't save and restore xmm/regs in __morestack.
Add debug info for boxes
Add debug info for vectors
Add debug info for bare_fn type
Prevent debug info generation of zero-span nodes

If a node has a (0, 0) span, it was not in the source, so debug symbols should not be generated for it.
Add debug info test for boxes
Add debug info test for vectors
core::rt: Restructure task_from_last_cleanup_job to borrow correctly

We need a number of mutable references to contexts so name it
`get_contexts` and return a tuple of all of them.
core::rt: Rename block_running_task_and_then to deschedul_...
core::rt: Insert calls to run_cleanup_tasks after all context switches
core::rt: Schedulers only need a single cleanup_job at a time

Each context switch has up to one cleanup job and it is always
executed immediately after the context switch.
core::rt: All context switches are followed by a cleanup action
core::rt: Clean up the thread-local scheduler code

Remove the ThreadLocalScheduler type in favor of functions.
Move everything into the sched::local module.
Prevent eval_const_expr_partial hides prior error in expr_cast arm.

This will help not to meet confusing errors.
In issue #5873, the error was "expected constant expr for vector length: Can't cast str to int".
It was originally "expected constant expr for vector length: Non-constant path in constant expr"
This patch make the original error to be printed.
rt: Move test functions to rust_test_helpers.cpp
core::rt: Fix two incorrect uses of the thread-local scheduler

These would not be threadsafe
core::rt: Move thread-local scheduler to its own module
core::rt: A little bit of cleanup to thread-local scheduler
core::rt: Rename Scheduler::local to Scheduler::unsafe_local
core::rt: Make Scheduler::unsafe_local return a fabricated region pointer

Instead of taking a closure. It's unsafe either way. Rename it to unsafe_local_borrow.