Put a lot of run-time checks on how our SVals are constructed, in order to maintain the existing status quo.
This should make understanding the hierarchy easier, and probably help us catch some bugs.
Clean up vtable anchors (remove anchors for regions that have regular out-of-line virtual methods, add anchors for regions that don't have those).
Fix private/public methods (all constructors should now be private for leaf classes, protected for abstract classes).
Remove an unused method.
A couple of subtle bugs were exposed in the process, which were not addressed:
- SymbolConjured for invalidations caused by automatic destructors may possibly be reincarnated.
- GenericTaintChecker may produce symbolic expressions of void type.