Ported check_const from oldvisit to <V:Visitor> trait API.
Ported check_loop from oldvisit to <V:Visit> trait API.
Port check_match from oldvisit to <V:Visitor> trait API.
Port const_eval from oldvisit to <V:Visitor> trait API.
Ported effect checker from oldvisit to <V:Visitor> trait API.
Port privacy.rs from oldvisit to <V:Visitor> trait.
port reachable.rs from oldvisit to <V:Visitor> trait.
port region.rs from oldvisit to <V:Visitor> trait API.
compiletest: Run tests in their own thread to avoid blocking the scheduler

The calls to waitpid are interacting badly with the message passing that goes
on between schedulers and causing us to have very little parallelism in
the test suite. I don't fully understand the sequence of events that causes
the problem here but clearly blocking on waitpid is something that a
well-behaved task should not be doing.

Unfortunately this adds quite a bit of overhead to each test: one thread, two
tasks, three stacks, so there's a tradeoff. The time to execute run-pass on
my 4-core machine goes from ~750s to ~300s.
Fix select deschedule environment race for real this time, in light of task killing.
Cleanup: remove useless parameter
Test for issue #6338.
Pointers to bound variables are stored after all patterns are matched.

Pointers to bound variables shouldn't be stored before checking pattern,
otherwise piped patterns can conflict with each other (issue #6338).

Closes #6338.
Fix error message when trait method ends with wrong token

When parsing a trait function, the function must end with either `;` or
`{` (signifying a default implementation). The error message incorrectly
stated that it must be `;` or `}`.

Fixes #6610.
Better error message for unknown start of token

The span was fixed at some point to point to the correct character, but
the error message is still bad. Update it to emit the actual character
in question (potentially escaped).

Fixes #3747.
syntax: add a local_data_key macro that creates a key for access to the TLS.

This allows the internal implementation details of the TLS keys to be
changed without requiring the update of all the users. (Or, applying
changes that have to be applied for the keys to work correctly, e.g.
forcing LLVM to not merge these constants.)
doc: correct spelling in documentation.
doc: convert remaining uses of core:: to std::.
Implement DeepClone for str types.
Implement Clone and DeepClone for time types.