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
Cheat and temporarily work around a pretty-printer bug
that will go away with the new region syntax.
fix test to not use fn expr
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