Better Particle collision

This code simulates Particle collision for all four directional options.
This includes corner collisions and hitting multiple surfaces during the
Particles life span.