cmTarget: Remove unnecessary 'mutable' markup

Members of the cmTargetInternals structure do not need to be made
'mutable' even to cache data because there is no reason for the
internal methods to be 'const'.
cmTarget: Refactor internal LinkImplementation map

If ComputeLinkImplementationLanguages were ever to cause
GetLinkImplementationLibraries to be invoked then a LinkImplMap entry
may appear in the middle of computing it in GetLinkInformation.  Instead
create the map entry up front and store in it boolean values indicating
which pieces of the LinkImplementation structure have been populated.
This approach leads to shorter code that is easier to follow too.
cmTarget: Shorten a long line in ComputeLinkImplementation

Prepare to change its indentation without exceeding line length limit.
cmTarget: Pre-indent a block in ComputeLinkImplementation

Prepare to move it into another block without extra whitespace changes.
cmTarget: Refactor ComputeLinkImplementation

Use LinkImplementationPropertyEntries directly instead of asking
GetProperty to construct a string for LINK_LIBRARIES.  This gives us
access to the entry backtraces.
Merge topic 'refactor-link-internals' into next

24637979 cmTarget: Refactor ComputeLinkImplementation
7812d2a9 cmTarget: Pre-indent a block in ComputeLinkImplementation
f48d8bd6 cmTarget: Shorten a long line in ComputeLinkImplementation
7b0834e9 cmTarget: Refactor internal LinkImplementation map
b8651d97 cmTarget: Remove unnecessary 'mutable' markup