Fix get_tydesc() return type

This fixes part of #3730, but not all.
Also changes the TyDesc struct to be equivalent with the generated
code, with the hope that the above issue may one day be closed for good,
i.e. that the TyDesc type can completely be specified in the Rust
sources and not be generated.
Remove intrinsic module

To achieve this, the following changes were made:
* Move TyDesc, TyVisitor and Opaque to std::unstable::intrinsics
* Convert TyDesc, TyVisitor and Opaque to lang items instead of specially
  handling the intrinsics module
* Removed TypeDesc, FreeGlue and get_type_desc() from sys

Fixes #3475.
Fix and reenable the reflect-visit-type test
Remove unused shape fields from typedescs
Small cleanups
Remove rust_call_tydesc_glue

Towards #4812. Also includes some minor cleanups.
syntax: Remove unused tokens

TyDesc, TyVisitor and intrinsic are not used anymore.
Remove unused TyDesc parameter from the glue functions

To remove the environment pointer, support for function pointers without
an environment argument is needed (i.e. a fixed version of #6661).
Fix reflect-visit-type for iterator changes
Fix test failure on windows

This patch ensures that the multiple extern definitions of `free` in the
run-pass tests have the same declaration, working around #7352.
auto merge of #7254 : Blei/rust/intrinsic-overhaul, r=cmr

This sets the `get_tydesc()` return type correctly and removes the intrinsic module. See #3730, #3475.

Update: this now also removes the unused shape fields in tydescs.