Implemented super rough raycaster, enemies recycle instead of re-instantiating

Had to recycle enemies because the raycaster was trying to access null objects when testing members
this way rays can just check object is alive.
Also fixed a fair few bugs in the way enemies' states were changed when using the new method.