Avoid allocations in givens

One problem here was that `convert` with tuple types calls `convert_tuple` even if no conversion is necessary, and `convert_tuple` is a built-in that needs `a jl_tuple_t`. A second problem was that the tuple elimination pass runs after the inlining pass, so the constructor wasn't getting inlined.