In some cases (an upcoming pass of mine that deals with a non-integral
address space) we want getUnderlyingObject() to regard the result of a
ptrmask() or other similar intrinsic that performs arbitrary bit
manipulation on a pointer to be considered a new object for analysis
purposes.
This commit supports this usecase by adding AllowBitManipulation as an
option to getUnderlyingObject*(). It will not break existing code
because the option defaults to true, which preserves the existing
behavior.