Issue 3563

r? @nikomatsakis This patch causes ```self``` to be inherited from the enclosing function context when typechecking nested closures, allowing default methods to call inherited methods on ```self```. This is effectively treating ```self``` like it has dynamic scope, for the purposes of typechecking. I think it should be sound to do so, since any incorrect uses of ```self``` would already have been flagged by resolve.

This addresses #3563,