def release_p p
            # hope there is no circular loop
            while p2=p.merged_shift
                release_p p2
            end
            p.reset!
            ( @pool[p.class] ||= [] ) << p
        end
def release_p p
            # hope there is no circular loop
            while p2=p.merged_shift
                release_p p2
            end
            p.reset!
            ( @pool[p.class] ||= [] ) << p
        end
releases the given Particle

 @parama [Particle] p the Particle to be released

 @note the Particle is stored into Hash @pool to be reused as soon as needed

 @see Particle#reset! the Particle is reseted before beeing stored