taming outer refs: anon-closures that retain fewer heap objects

This PR supersedes https://github.com/scala/scala/pull/2633

Original discussion at https://groups.google.com/forum/#!topic/scala-internals/jQiRINTvhZQ

review by @JamesIry or @paulp