Draft: Set attributes by `GenParticlePtr` or `GenVertexPtr`
Added member function GenEvent::add_attribute
which takes either a
GenParticlePtr or GenVertexPtr as the last argument (rather than an ID),
and adds an attribute to the event.
Also GenParticle::add_attribute
and GenVertex::add_vertex
calls
these two member functions with this->shared_from_this()
.
This allows more transparent addition of attributes.