Reland [flang][debug] Emit debug info for named constants- #213974 (#215369)
Reland of #213974, which was reverted in #214813 because of #214777.
This is the same as #213974 with a check added to skip a constant for which we only have a declaration. A constant of a user module is still described in the unit defining the module, so nothing is lost there. An intrinsic module has no such unit, so its constants are not described until we emit DW_AT_const_value for them, which can be done separately.
Whether a module is described as a definition or a declaration is now decided up front rather than inferred from whichever member reached getOrCreateModuleAttr first.
Two tests are added: one on the pass, and one checking that the object file has no undefined symbol from iso_fortran_env, which is the case the original change did not cover.