compiler: avoid orphaning Bexpressions when processing conversions
The method Type_conversion_expression::do_get_backend was (in some
circumstances) creating a Bexpression for the source expression of the
conversion and then throwing it away before using it. Fix up this
method to insure that the call to get_backend() on the source
expression is only made when the result will be used.