PR49043 exposed a problem when it comes to RAUW llvm.assumes. While
D96106 would fix it for GVNSink, it seems a more general concern. To
avoid future problems this patch moves away from the vector of weak
reference model used in the assumption cache. Instead, we track the
llvm.assume calls with a callback handle which will remove itself from
the cache if the call is deleted.
Fixes PR49043.
clang-tidy: warning: 'llvm::AssumptionCache::AssumeHandle' has virtual functions but non-virtual destructor [clang-diagnostic-non-virtual-dtor]
not useful