replace option::iter with a BaseIter impl
Construct const fns based on the type, not the definition.

Otherwise we can add a null environment when we shouldn't.

Fixes #5210.
Assert that constants are translated with the correct size.
Add a test case for const fn sizing, just to be safe.
Change the default level of unused_imports to warn
Remove unused imports throughout src/
Add a special FIXME for subduing warnings in rpath.rs
Adding missing imports for tests, and gate off others
libsyntax: Implement `#[deriving_clone]`
better error message for macros with MOD_SEPs
simplified msg (TMI on old one)
added test case for macros with separators error message
Add test for issue #4448
De-implicit-self libcore
build fixes
auto merge of #5228 : pcwalton/rust/deriving-clone, r=pcwalton

r? @graydon
auto merge of #5179 : alexcrichton/rust/default-warn-unused-import, r=graydon

I've found that unused imports can often start cluttering a project after a long time, and it's very useful to keep them under control. I don't like how Go forces a compiler error by default and it can't be changed, but I certainly want to know about them so I think that a warn is a good default.

Now that the `unused_imports` lint option is a bit smarter, I think it's possible to change the default level to warn. This commit also removes all unused imports throughout the compiler and libraries (500+).

The only odd things that I ran into were that some `use` statements had to have `#[cfg(notest)]` or `#[cfg(test)]` based on where they were. The ones with `notest` were mostly in core for modules like `cmp` whereas `cfg(test)` was for tests that weren't part of a normal `mod test` module.
auto merge of #5212 : thestinger/rust/iter, r=graydon

A small step towards fixing #2827
auto merge of #5215 : jld/rust/fn-const-env, r=graydon

Fixes #5210; unblocks #5183.
Update region inference for traits so that a method with
explicit self doesn't incorrectly cause the entire trait to
be tagged as being region-parameterized.

Fixes #5224.