libcore: remove default to_str implementations for pointer types

These couldn't be overridden and so ended up being quite restrictive. This has
the side effect of changing the stringification of ~vecs, but nothing in
relied on this. Closes #4869.
testsuite: Update and un-xfail #3601 test
Turn old `drop` blocks into `Drop` traits
Remove the last remnants of rtcalls
auto merge of #5098 : pkgw/rust/pr/issue4869, r=brson

See issue #4869. I'm not quite sure what constitutes "consensus from the core team" (cf. discussion in the issue), but this at least demonstrates that the proposed change is pretty straightforward.

After this change, there are no new test failures. I've un-ignored the `to_str` vectors test; it's not at all obvious to me why it'd be problematic, and it passes on my Linux machine.
auto merge of #5152 : catamorphism/rust/issue-3601, r=catamorphism
auto merge of #5155 : bstrie/rust/dedrop, r=pcwalton

This removes all but 6 uses of `drop {}` from the entire codebase. Removing any of the remaining uses causes various non-trivial bugs; I'll start reporting them once this gets merged.
auto merge of #5159 : brson/rust/rtcall, r=brson
Classify ADT representations
Convert match on enums to use trans::adt.
Convert type_of to use trans::adt.
Avoid unnecessary casts in struct_GEP
Re-add discriminant range annotations
Add a test for enum discriminant range overflow.

It causes an LLVM assertion for every host/target word-size combination
on incoming at the time of this writing.
Handle unit-like types specially.

This change remains separate from the addition of adt.rs, even though
it's necessary for compatibility with pre-trans::adt representation,
to serve as an example of a change to the representation logic.
Factor out discriminant loading more, for use in casts.
Renovate expr_tup translation
Convert expr_struct to use adt, and try to share code with tuples.
Renovate nullary variant construction
Renovate field projection expressions