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
Fixed os:: and int:: not being in scope, changed io::println to println
Updated copyright year on shootout-binarytrees.rs
Changed shootout-chameneos-redux output to conform to the 'official' output format.
Added missing copyright notice to shootout-spectralnorm.
Fixed shootout-fasta.rs output
Updated shootout-fasta.rs copyright years, removed stuff that caused lint to complain.
Changed Arena API to make it usable once more.
Add 'static mut' items to the language
Support foreign 'static mut' variables as well
Create a crypto submodule and move the SHA-1 implementation into it.
Improve the SHA-1 implementation

* Rename struct Sha1State to Sha1
* Remove all use of @ types
* Use fixed length vectors
* Move all of the inner functions from inside sha1() to top level, private functions
* Sha1 instances are now created via Sha1::new()
* Update all constant names to uppercase
* Remove unecessary assert_eq!s
* Remove check_vec_eq() helper function; use vec::eq() instead