Rewrite $a ?: $b to empty($a) ? $b : $a if $a is a variable

The patch for this RFC: https://wiki.php.net/rfc/isset_ternary
It seems a bit inconsistent to me that $a ? $a : $b will throw a notice and $a ?: $b won't. We would need to make that change extremely clear in the documentation highlighting the fact that ?: is now the first operator to suppress these notices and that it is now fundamentally different from its cousin, the ? expr1 : expr2 operator.