reorganized, then modified particle.contain() to eliminate contained velocity as well as position
updated particle.createRandom() to include a spread value
implemented lastValidPosition so renderer can draw valid positions and integrator can continue to integrate with accurate velocities
implemented remaining velocities... frankly it seems unnoticable and just increases complexity so going to remove, simplify collisions to bouncepoint each frame
very fast and stable, only visible errors are some incredibly high speed particles cutting through...
removed bounds from particles, passing into particle.contain()
totally stable - no more surface penetration even at high reflected and contained speeds