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>
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.
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 auto_encode test to avoid unnecessary boxed objects
patch up pretty printing of things with both lifetime and type parameters
auto merge of #5125 : nikomatsakis/rust/issue-4846-lifetime-defaults, r=nikomatsakis

Work towards #4846.

- Institute new region defaults where all omitted regions get a fresh lifetime.
- Require explicit region names except in functions.
- Fix a bug in region parameterization inference.  I've been putting this off because it will not be important when we remove RP inference in favor of explicit declarations, but then it was blocking this patch.

r? @pcwalton