Add an 'AccessUnion' component to AccessPaths
Add an 'AccessUnion' component to AccessPaths

This is required to distinguish union fields from struct fields (since
unions in LLVM do not carry information about their fields).  The
discriminator is the Type that is used as a tag with AccessUnion - it
tells the type of the union field being accessed.

This change also, unfortunately, changes the AccessPath constructed
for some values: namely those whose base value was formerly a bitcast.
Now, the base value does not have the bitcast.  This is a byproduct of
the new matching required to recognize unions, but it should have
minimal impact on client code.  If looking up access paths by their
base value, just be sure to strip bitcasts from your key before
performing the lookup.

wangxiayang/llvm-analysis,travitch/llvm-analysis,wangxiayang/llvm-analysis,travitch/llvm-analysis