Particle system cleanup

This improves the particle system by moving them to their own functions
handled by update. This creates less bugs by creating a different
particle for each new particle type that we need to use, but letting
them all update/interact the same.