More GC annotation in C code (#37272)
* Mark more functions as not safepoints
* Mark more error throwing function as having callee rooted arguments
* Make runtime symbol lookup function not-safepoint-or-throw
* Use `jl_field_type_concrete` in more places where the input argument is known concrete (return from `jl_typeof`)
* Use `jl_safe_printf` in `jl_checked_assignment` to print constant overwrite warning
to make it more clear to the analyser that the printing does not allocate.