C/LLVM backends: Delay emitting procedures with unsolved forward references

This adjusts the AST to delay emitting of certain procedures when using the
C/LLVM backends, similar to how the emitting of PRIVATE procedures is
already delayed until the end of the implicit main() function.

The problem is with procedures using forward references in their signature,
either as function result type or as parameter. Previously they could be
emitted even before those forward references are resolved. That's ok for
the ASM backend but it causes type conflicts for the C/LLVM backends,
because they would emit the forward references as ANY PTRs while they're
not resolved yet. But if any calls are seen later when the forward
references are known, the C/LLVM backends would emit a prototype and the
call using the signature with the resolved types. This prototype/call
signature however then conflicted with the body's signature (using ANY
PTRs instead of the proper resolved types).

I think the best way to fix this is to simply delay emitting such
procedures at the AST level if needed. Another possibility would be to
handle it purely in the C/LLVM backends - but essentially they'd have to do
exactly that: delay emitting such procedures until they can fill in the
real types. Or emit every pointer as ANY PTR such that the exact types
simply don't matter, making them more similar to the ASM backend... but
that seems like a change with bigger impact than this one, and it would
break -g debug information.