rustc: Move code for discovering the crate entry point into its own pass

It doesn't have anything to do with resolve and the logic will likely get
more involved in the future, after #4433
rustc: Only accept main functions at the crate level. #4433
libsyntax: extend generic deriving code to handle almost all possible traits.

This adds support for static methods, and arguments of most types, traits with
type parameters, methods with type parameters (and lifetimes for both), as well
as making the code more robust to support deriving on types with lifetimes (i.e.
'self).
libsyntax: convert #[deriving(IterBytes)] to generic deriving
libsyntax: add #[deriving(Rand, ToStr)].

The former fills each field of a struct or enum variant with a random
value (and picks a random enum variant). The latter makes the .to_str
method have the same output as fmt!("%?", ..).
testsuite: tests for deriving changes and additions
Make lint_table static
Lift restriction on calling extern C functions, and propagate
the ABI as part of the type of an extern fn. cc #3678
Port IRBuilder::CreateVectorSplat
Check SIMD vector types
Add core::simd and define SIMD vector types
Add SIMD vector type tests
Remove trailing whitespace
rc: remove the managed pointer workaround
arc: mark RWARC as non-Const
Generate LLVM SIMD vector types
rt: Move win32_require out of the rust_kernel type

This is only used on rust_rng, which I am trying to extricate from
the kernel.
rt: Eliminate the dependency on rust_kernel from rust_rng
core::rt: Add a test that rng works with new tasks
Add some tests for local data + borrowed pointers