fix std::cmp docstring
update FuzzyEq to explicit self
add a FuzzyEq method that accepts an epsilon value
Add support for Ubuntu named clang packages.

Ubuntu's clang packages have additional information appended to the end of
the version.

- Building Rust v0.5 with clang v3.0-6ubuntu3 fails.
- Building Rust v0.5 and incoming with clang v3.1-5ppa (backported from Debian)
works.

Closes #4441.
Fix two code examples in main rust tutorial.

1. The section on trait definitions of static methods should include
   a trait with a static method in the generated document.

2. The section on trait inheritance had a expression that appears
   nonsensical ("let mycircle = @mycircle") in the generated document.
   The text would be clearer (IMO) if we continued with the running
   example of CircleStruct.
Fixed two examples of erroneous code so their errors match expectation.

1. In the first case, the previous code was failing during type inference
   due to mismatched structure.  Fix is to use the X structure at both
   points in the code.

2. In the second case, a naive transcription that subsitutes *nothing*
   in for the omitted statements signified by "..." will actually
   compile without an error.  Furthermore, any pure code could also be
   substituted for the ellipsis and the code would compile (as the
   text already states).  So to make the example more illustrative, it
   would be better to include an impure callback, which makes the
   potential for aliasing immediately obvious to the reader.
Formatting cleanup.

I had put a line break in to try to stress the binding of mycircle,
but generated document looks cleaner without newline.
fix #2673: avoid visiting the same crate twice
Add expected failure annotation on "fixed" example to placate 'make check'.
Fix the len() method on LinearMap during popping
Merge pull request #4672 from alexcrichton/linearmap-len-fix

Fix the len() method on LinearMap during popping
libstd: Remove "dual impls" from the language and enforce coherence rules. r=brson

"Dual impls" are impls that are both type implementations and trait
implementations. They can lead to ambiguity and so this patch removes them
from the language.

This also enforces coherence rules. Without this patch, records can implement
traits not defined in the current crate. This patch fixes this, and updates
all of rustc to adhere to the new enforcement. Most of this patch is fixing
rustc to obey the coherence rules, which involves converting a bunch of records
to structs.
librustc: Disallow trait bounds in types, enumerations, and structure definitions. r=tjc
librustc: De-implicit-self the visitor. r=graydon
Merge pull request #4668 from ILyoan/i2673

fix #2673: avoid visiting the same crate twice
docs: Add a note to CONTRIBUTING.md about copyright dates
Long line
libsyntax: Implement the `impl Trait for Type` syntax
libcore: De-export libcore. rs=deexporting
libstd: De-export libstd. rs=deexport