[clang] Use SourceLocation as key in hash maps, NFCI
The patch adjusts the existing llvm::DenseMap<unsigned, T> and
llvm::DenseSet<unsigned> objects that store source locations, so
that they use SourceLocation directly instead of unsigned.
This patch relies on the DenseMapInfo trait added in D89719.
It also replaces the construction of SourceLocation objects from
the constants -1 and -2 with calls to the trait's methods getEmptyKey
and getTombstoneKey where appropriate.
Reviewed By: dexonsmith
Differential Revision: https://reviews.llvm.org/D69840