cmLocalGenerator: Add GetObjectDirectory method.

Use NVI to compute and cache the result from concrete generators.
cmLocalGenerator: Add GetDirectoryForObjects method.

The Makefile and Ninja generators use GetObjectDirectory for this,
but Visual Studio uses a separate calculation, and Xcode does not
need it at all. Add an empty implementation for Xcode because this
will allow the object filenames to be computed in generic code
in a follow-up commit.
cmGeneratorTarget: Move ExplicitTargetName to VS local generator
cmLocalGenerator: Add ComputeObjectFilenames method.
cmLocalGenerator: Add ComputeObjectFilename method.

The generators need to be able to get the ObjectName for a
single source file.
cmGeneratorTarget: Remove GetObjectName method.

It is no longer used.
cmGeneratorTarget: Compute target objects in LookupObjectLibraries.

Remove the old method from the generators which are now all
functionally identical.

Remove the supporting cmGeneratorTarget::AddObject method.

In a follow-up, the LookupObjectLibraries 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.
Merge topic 'target-objects-refactor' into next

04c4b89d cmGeneratorTarget: Compute target objects in LookupObjectLibraries.
49b4e519 cmGeneratorTarget: Remove GetObjectName method.
6af1f871 cmLocalGenerator: Add ComputeObjectFilename method.
37588a42 cmLocalGenerator: Add ComputeObjectFilenames method.
b6cabed3 cmGeneratorTarget: Move ExplicitTargetName to VS local generator
8b6f55c9 cmLocalGenerator: Add GetDirectoryForObjects method.
44b32675 cmLocalGenerator: Add GetObjectDirectory method.