Ai player utility

helper functions for AI: testing if an object is in line of sight (and optionally if it's enabled), if a point is clear, and if an object is within a given angular field of view (optionally specified beyond a stock 45 degrees, as well as optionally checking if the target is enabled)
I suspect the logic in this section has changed. Won't this throw `"onTargetEnterLos"` for every tick that the target is in LOS? The original code only throws this event (and `"onTargetExitLos"`) once when the LOS state of the target changes.