Fix bug in coherence that causes all cross-crate impls to be regarded as
inherent impls, not just those of the `impl Type` variety.
Make object types not implement associated trait.  Fixes #5087.
Remove trailing whitespace.
auto merge of #5252 : nikomatsakis/rust/issue-5087-make-trait-not-impl-self, r=pcwalton

Two changes:

- The first fixes an inconsistency in coherence whereby extension methods were added to the inherent methods table, but only in cross-crate scenarios.  This causes some minor fallout in tests and so forth.  In one case (comm) I added inherent and trait methods so as to avoid the need to import traits like `GenericPort` just to use a port.

- The second makes objects not implement the associated trait, as discussed in #5087.

r? @pcwalton
auto merge of #5253 : nikomatsakis/rust/issue-5243, r=graydon

them to be non-monomorphic.  Merely having lifetime parameters
is not enough to qualify for that status.  Fixes #5243.

r?
Add manual &self/ and &static/ and /&self declarations that
are currently inferred.  New rules are coming that will require
them to be explicit.  All add some explicit self declarations.
Permit either foo/&self or foo<'self>
convert FnCtxt methods from @mut self to &self
Convert region parameterization to change defaults and handle
methods correctly
Improve error messages when illegal lifetimes are used
patch up pretty printing of things with both lifetime and type parameters