Defer reasoning about regions until after regionck

This addresses issue #3238. It will also (in the future) enable more specific error messages for region inference failures, though I don't do much with that in this commit.

See first commit for details and brief motivation. 

You may want to begin with the last commit, which adds some documentation explaining in a bit more detail some of the issues that arise when trying to handle closures. The docs include some material on how inference will handle closure bounds, though that code is not yet written (hoping to tackle that next).

r? @pcwalton (or anyone, but I guess you are the most versed in the code in question)