Implement BorrowFrom<&'a T> for T (with mutable variants)
auto merge of #19146 : gereeter/rust/reference-borrow, r=aturon

This should be a more general version of #19131.