cmListFileCache: Refactor cmListFileBacktrace internals
Replace use of raw pointers and explicit reference counting with
std::shared_ptr<>
. Use a discriminated union to store either the
bottom level or a call/file context in each heap-allocated entry.
This avoids storing a copy of the bottom in every cmListFileBacktrace
instance and shrinks the structure to a single shared_ptr
.