RFC: Single-entry / multiple-exit regions for borrows

[Rendered](https://github.com/zwarich/rfcs/blob/seme-regions/active/0000-seme-regions.md)
Okay, this is getting out of my comfort zone. Possibly you are right.

Let me elaborate on the last example a bit:
    
    obj.getSomethingMutablyBorrowsObj().someFunction(obj.name)  

This can be rewritten as

    let &mut  foo = obj.getSomethingMutablyBorrowsObj();
    foo.someFunction(obj.name);

And if getSomethingMutablyBorrowsObj is something like this:

     fn getSomethingMutablyBorrowsObj(&'a mut self) -> &'a mut Something {
        self.a ? self.obj1 : self.obj2
     }
  
I understand that obj is mutably borrowed for lifetime of foo. The receiver in this case is foo and borrowing of obj has already happened while evaluating getSomething.