[JuliaLowering] Fix and test `cglobal` (#60954)
Noticed on the asserts build in
https://github.com/JuliaLang/julia/pull/60942. The output of `(call
cglobal _...)` lowering is an ordinary call which expects a `(call
Core.tuple sym lib)` arg, and not a special form like `foreigncall` that
expects `(tuple sym lib)`. Fix this and add tests.
The specific failure was `do` and `->` forms getting desugared twice,
causing a foreigncall to contain `(call Core.tuple _...)` instead of the
Expr-`tuple` it expected. This PR fixes the double-desugaring, but also
makes the desugaring idempotent.