Fix Issue 9975 - pointsTo asserts because of false pointer in union

This fixes issue 9974 in points to, amongst other issues:

unions: Named unions are now correctly taken into account.
classes: These are handle the same as if they were pointers.
alias this: A subtle bug: An alias this could make pointsTo take the wrong path, analyzing the alias, rather than the actual source. The fix is to *really* check _IsA_ as opposed to "Convertible to". In particular: "isPointer".

Improved on documentation to avoid pitfalls.

Reworked the restraints: It makes 0 sense to pass target by value, so that was banned. Source was expanded to accept by value pointers and classes.