Decoupled canvas/renderer resizing from window resize events, made resizes smarter, and split initParticles into two functions so it wouldn't clear the particle array on every resize.