Properly handled (partial) desugaring of 'const NS::Something_t'

TClassEdit::ResolveTypedef was not properly handling the leading const
if there is a namespace in the name (and no template).

Transform::GetPartiallyDesugaredType was not keeping the 'const' in case
the target of the typedef was in the global scope (for example being a
fundamental type).

This fixes ROOT-5576
Add comment clarifying ROOT-4602
Improve GetFileName() algorithm:

Before, when looking for the declaration file /A/B/C/D.h, any file called D.h that is reachable through an include search path would have been found.

This is improved by first looking for A/B/C/D.h (within any search path), then B/C/D.h etc, until found. This is the "long version" of the header file name.

Then the reverse pass happens: D.h, then C/D.h etc is searched for, and if found its FileEntry is identical to the FileEntry of the long version it will be returned.

This allows to find the most specific version of the file (B/C/D.h), but its shortest include name resulting in the inclusion of the same file (C/D.h).
Handle =default/delete. Be more verbose in assert. Use isImplicit()