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

[Rendered](https://github.com/zwarich/rfcs/blob/seme-regions/active/0000-seme-regions.md)
It's possibly changing the order of evaluation, e.g. changing `a.foo().bar(a.baz())` to `let tmp = a.baz(); a.foo().bar(tmp)` runs things in different orders.

(It may be necessary to change it like this, since `foo` could return a mutable borrow of `a`.)