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.
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.
core::rt: Restructure context switches to take ownership of the Scheduler

In order to do a context switch you have to give up ownership of the scheduler,
effectively passing it to the next execution context. This could help avoid
some situations here tasks retain unsafe pointers to schedulers between context
switches, across which they may have changed threads.

There are still a number of uses of unsafe scheduler pointers.