Fix gc allocation lowering
We changed the function signature so it's not safe to copy all attributes and metadata.
In particular, this triggers an llvm assertion when the type (3rd) argument is marked `nonnull`.
Also add `nonnull` attribute to the return value.