This diff fixes a long debated issues with pointers/references not being dereferenced according to their dynamic type. This also fixed an issue where regions that were pointed to by void pointers were not analyzed.
Note how I also added a test case about inheritance, clearly showing that it doesn't find an uninitialized field that it should. Because base class handling is still being discussed, I'm planning to fix that issue in a different patch. The reason why it's still in this patch is that it might be closely tied to these changes too.
Thumbs up to @NoQ for setting me on the right track!
I already have a fix for this, but I want to be extra sure, so I'm running the checker on LLVM to see whether anything breaks.
This is also important for nonloc::LocAsInteger, which I'm going add fix in yet another patch.