1.) Constructors
Prior to this patch, if an object had a trivial copy/move constructor we couldn't track
a value further than the copy constructor invocation. The problem is that in such cases
the analyzer doesn't inline the constructor, but performs a trivial copy instead. A trivial
copy means, we just copy the values from one place to another.
This patch handles this case by matching the regions of the 2 objects involved in the
construction, and tracks the appropriate region.
2.) Initializer lists
Prior to this patch we ignored initializer lists.
This patch handles them up to some extent.
Nit: we have isCopyOrMoveConstructor.