It seems like it is the analyzer RFC week so I'll contribute a bit.
TL;DR: I think we may need to split up checkers from execution modeling in order to resolve unclear dependencies between checkers, improve checker development process and resolve some non-trivial issues. There is no any proof-of-concept implementation, just some thoughts I (and our team) wish to summarize and to describe the issue. Feel free to share your opinion or correct me if I made wrong assumptions or wrong conclusions.
0. Pre-history.
There were some thoughts on this topic shared personally during meetings. I and Artem Dergachev agreed on the fact that checker capabilities to do everything that make implementation of some common approaches to simplify the checker API much harder; unfortunately, I don't know if any decision about this was made on latest LLVM devmeeting because its results were not shared.