Currently parts in RuntimePointerChecking owns
RuntimeCheckingPtrGroup directly, which is reference from other
datastructures in RuntimePointerChecking. This prevents copying of
RuntimePointerChecking and couples things tightly.
This patch allows sharing, which will be used in a follow-on patch. It
use shared_ptr, but alternatively LAI could own the groups, but that
might couple LAI and RuntimePointerChecking unnecessarily.