- IsArrayElement() needs another option to control whether it should ignore trailing component references.
- Add IsObjectPointer().
- Add const Scope& variants of IsFunction() and IsProcedure().
- Make TypeAndShape::Characterize() work with procedure bindings.
- Handle CHARACTER length in MeasureSizeInBytes().
- Fine-tune FindExternallyVisibleObject()'s handling of dummy arguments to conform with Fortran 2018: only INTENT(IN) and dummy pointers in pure functions signify; update two tests accordingly.
Also: resolve some stylistic inconsistencies and add a missing
"const" in the expression traversal template framework.