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
Add test for #4666, which didn't *quite* seem to be covered by
existing tests. The bug itself was fixed as part of recent borrowck
reform.

Fixes #4666.
rc: remove the managed pointer workaround
arc: mark RWARC as non-Const
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
io: handle fread() errors

When, occasionally, trying to read directory instead of file, `fread()`
returns `EISDIR` error. And, considering, absence of error handling,
`read_whole_stream()` just loops indefinitely.
core: Replace Durable with 'static
std: Replace Durable with 'static
rustc: Replace Durable with 'static
test: Replace Durable with 'static
Remove Durable from the language
extranous thing is removed