Fix rules for checking Borrowed types

Need to ensure that the scope of a let binding doesn't refer to names
used in the let bound value, otherwise we might update or destroy before
reading!