add protection to art::Ptr
By creating a pathological product, I found this code
art::Ptr<SimParticle> const& pptr = obj.parent(); if(pptr) pkey = pptr->id().asUint();
can seg fault on the Ptr dereference. The expected behavior was that
if a Ptr passes the check in the if, then it will not seg fault on dereference.
In discussions with Kyle, it is possible to put in a check for this case, which is
basically a valid productID, but the key is out of bounds. I think clearly
if you ask for the dereference and it can't be dereferenced, that should throw
a severe error. But I'm not sure what is the best policy for the isAvailable
check, to return false or throw, so I leave that to the experts. I guess I would
vote for throw, since it would generally be a pathological situation to access
a Ptr with a valid productID but a key that is out of bounds.