Return the name of the current subprogram, package, task, entry or
protected subprogram. The string is in exactly the form used for the
declaration of the entity (casing and encoding conventions), and is
considered to be a static string constant.
Note: if this function is used at the outer level of a generic
package, the string returned will be the name of the instance,
not the generic package itself. This is useful in identifying
and logging information from within generic templates.