DuettoBackend: refactored TypeSupport class

Note, we also changed the interface of every function which takes a const
llvm::Type to take a llvm::Type.
This is because some llvm functions which use Type are not const-correct (sigh).
A llvm::Type is immutable anyway, so the semantic is the same.
DuettoBackend: improve pointer analyzer

- BitCasts and Nopcasts now produce regular if we lose conversion info
- hasSelfMember now report false for classes with bases info
- Added a bunch of calls to the pointer analyzer when using compileOperand in DuettoWriter
DuettoBackend: fixed bug in pointer analyzer using AA
DuettoBackend; function pointers are now always COMPLETE_OBJECT
DuettoBackend: minor bugfix in globaldepsanalyzer