Changes lasers to a system where they are reused, to avoid object
creation lag. Reimplements the collision detection to use the
separating axis theorem derived algorithm.

Fixes #2511.
Fixes #2611.