Fix regionck to consider bounds on a proc when capturing variables
Fix regionck to account for the uniqueness requirements on ref mut reborrows
Fix kindck to consider inherited bounds
Refactor and cleanup inference code: s/get_ref()/fields/, use try! macro rather than if_ok!
Introduce snapshot_vec abstraction
Introduce new inference scheme: variables are now instantiated with at most one type, and region variables are introduced as needed
Label FIXMEs with a bug number
auto merge of #15955 : nikomatsakis/rust/issue-5527-new-inference-scheme, r=pcwalton

The inference scheme proposed in <http://smallcultfollowing.com/babysteps/blog/2014/07/09/an-experimental-new-type-inference-scheme-for-rust/>.

This is theoretically a [breaking-change]. It is possible that you may encounter type checking errors, particularly related to closures or functions with higher-ranked lifetimes or object types. Adding more explicit type annotations should help the problem. However, I have not been able to make an example that *actually* successfully compiles with the older scheme and fails with the newer scheme.

f? @pcwalton, @pnkfelix