Make typechecker compositional

The typechecker previously passed around a boolean return flag to
indicate whether it saw something with type _|_ (that is, something
it knows at compile-time will definitely diverge) and also had some
manual checks for the `ty_err` pseudo-type that represents a previous
type error. This was because the typing rules implemented by the
typechecker didn't properly propagate _|_ and ty_err. I fixed it.

This also required changing expected error messages in a few tests,
as now we're printing out fewer derived errors -- in fact, at this
point we should print out no derived errors, so report any that
you see (ones that include "[type error]") as bugs.
rt: Increase C_STACK_SIZE to 2MB to get JIT/rusti working again (dlopen segfaults)
librustc: Fix path-qualified and cross-crate constants in match patterns.
Test for cross-crate const in match pattern.
auto merge of #5464 : luqmana/rust/const-pat, r=pcwalton

r? @pcwalton
librustc: Forbid access to cross-crate private static methods
auto merge of #5457 : pcwalton/rust/xcpsm, r=pcwalton

r? @catamorphism
rustc: Comments only - explain the invariant about ty_err and ty_bot a little
auto merge of #5461 : catamorphism/rust/flagless, r=nikomatsakis

r? @nikomatsakis The typechecker previously passed around a boolean return flag to
indicate whether it saw something with type _|_ (that is, something
it knows at compile-time will definitely diverge) and also had some
manual checks for the `ty_err` pseudo-type that represents a previous
type error. This was because the typing rules implemented by the
typechecker didn't properly propagate _|_ and ty_err. I fixed it.

This also required changing expected error messages in a few tests,
as now we're printing out fewer derived errors -- in fact, at this
point we should print out no derived errors, so report any that
you see (ones that include "[type error]") as bugs.
auto merge of #5468 : z0w0/rust/iluvdatjit, r=pcwalton
Switched over substr and trim functions in str to be non-allocating, temporary renamed them to better track use-sites
Un-renamed trim and substr functions.