Makefiles: Compute local object files on demand.

Don't compute them up front.
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

55f52c00 cmGeneratorTarget: Compute target objects in LookupObjectLibraries.
1a67565d cmGeneratorTarget: Remove GetObjectName method.
b1f6decb cmLocalGenerator: Add ComputeObjectFilename method.
f96cd288 cmLocalGenerator: Add ComputeObjectFilenames method.
6fe8fb46 cmGeneratorTarget: Move ExplicitTargetName to VS local generator
1df15717 cmLocalGenerator: Add GetDirectoryForObjects method.
85dbb85b cmLocalGenerator: Add GetObjectDirectory method.
b5e07c38 Makefiles: Compute local object files on demand.