vim: Add :Run and :Expand commands

Define a command :Run to compile and run the current file. This supports
unnamed buffers (by writing to a temporary file). See the comment above
the command definition for notes on usage.

Define <D-r> and <D-R> mappings for :Run to make it easier to invoke in
MacVim.

Define a command :Expand to display the --pretty expanded output for the
current file. This can be configured to use different pretty types. See
the comment above the command definition for notes on usage.

Create an autoload file and put function definitions there to speed up
load time.
Rename :Run and :Expand to :RustRun and :RustExpand
Write documentation for the Rust vim plugin
Add commands :RustEmitIr and :RustEmitAsm
Add a ByteOrder trait for abstracting over endian conversions

The `Bitwise::swap_bytes` method was also moved into the `ByteOrder` trait. This was because it works on the byte level rather than the bit level.
Use ByteOrder methods instead of free-standing functions
Fix comment formatting
Merge the Bitwise and ByteOrder traits into the Int trait

This reduces the complexity of the trait hierarchy.
Remove `#[stable]` attribute from free-standing endian conversions and mark them as deprecated
Shorten endian conversion method names

The consensus on #14917 was that the proposed names were too long.
Update doc comment for Int trait
librustc: Use expr_ty_adjusted in trans_overloaded_call.
Revamp TaskBuilder API

This patch consolidates and cleans up the task spawning APIs:

* Removes the problematic `future_result` method from `std::task::TaskBuilder`,
  and adds a `try_future` that both spawns the task and returns a future
  representing its eventual result (or failure).

* Removes the public `opts` field from `TaskBuilder`, instead adding appropriate
  builder methods to configure the task.

* Adds extension traits to libgreen and libnative that add methods to
  `TaskBuilder` for spawning the task as a green or native thread.

Previously, there was no way to benefit from the `TaskBuilder` functionality and
also set the scheduler to spawn within.

With this change, all task spawning scenarios are supported through the
`TaskBuilder` interface.

Closes #3725.

[breaking-change]
Fallout from TaskBuilder changes

This commit brings code downstream of libstd up to date with the new
TaskBuilder API.
Reject double moves out of array elements

Fixes #14986.
Vim: highlight escapes for byte literals.
Vim: highlight invalid characters in char literals.
Fix FIXME #5275

Issue #5275 was closed, but there still was a FIXME for it.
Fix #14865

Fixes a codegen bug which generates illegal non-terminated LLVM block
when there are wildcard pattern with guard and enum patterns in a match
expression. Also refactors the code a little.

Closes #14865
debuginfo: Add test case for issue 14411.