This change teaches instruction combiner on how to unfold element atomic memcpy intrinsic into sequence of explicit atomic memory operations.
Also I added new IntrinsicInst subclass to provide user friendly interface for the element atomic memcpy intrinsic. In the future we want to integrate this new class into MemIntrinsic hierarchy which will allow us to easily write optimizations covering both atomic and non-atomic versions. However as a first step I decided to frame it as a separate entity and refactor it later after we determine which use cases generalised interface should cover.
minor: instead of "class handles" use "represents"