create Ptr to product
The art:Ptr<T> can only be used to point to an object
inside a indexed container of T, so logically it contains the productID
and an index. An example is a track might contain art::Ptr's to
hits in a product which is a vector of hits. We have some use cases
where we would like one product to point to another product, in total.
For example, the track collection product could contain
a pointer to the hit collection, simply to say "this track
collection was created from this hit collection" or to
create a product which is a list of pointers to a logically
associated, but diverse in type, set of products.
So logically this new art::ProductPtr<T> would contain
a productID, be persistable, and dereference to T*. Another thought,
which I have no idea is possible under the covers or reasonable,
is to make art::Handle<T> persistent.