cmGlobalGenerator: Make ComputeTargetObjects non-virtual

Implement it in terms of the ComputeObjectFilenames virtual method
on the local generators.

Remove the reimplementation from the global generators which are
now all functionally identical.
cmGeneratorTarget: Don't store ObjectSources for object libraries.

Compute them on demand instead.
cmGeneratorTarget: Compute target objects on demand

Add a ComputeTargetObjects method to compute the object
names.  It takes mapping to populate as an out-parameter so
that it can be extended in the future with parameters
relevant to generator expression evaluation.

Remove the supporting cmGeneratorTarget::AddObject method. It is
no longer needed as the container member is populated directly.

In a follow-up, the UseObjectLibraries usage may be replaced by a
true generator expression evaluator for TARGET_OBJECTS. That
will require generators to use cmGeneratorTarget::GetExternalObjects
which is not currently the case for Xcode and VS generators.
Encoding: Provide option to configure CMake to use UTF-8 encoding.
Encoding: If configured, write Visual Studio project files as UTF-8.
Merge topic 'target-objects-refactor' into next

ca92ba82 cmGeneratorTarget: Compute target objects on demand
1ec5f686 cmGeneratorTarget: Don't store ObjectSources for object libraries.
67dd2c6f cmGlobalGenerator: Make ComputeTargetObjects non-virtual
Merge topic 'unicode-vs-projects' into next

ee8cef87 Encoding: If configured, write Visual Studio project files as UTF-8.
91fd99b8 Encoding: Provide option to configure CMake to use UTF-8 encoding.