Code effeciency project: /proc/get_mobs_in_view

Before:  Everytime you say something. This proc is ran.  Along with it, recurses through EVERY /obj/ & /mob/ in view's contents, and EVERY /obj/ & /mob/ in that contents...and once again.

After:  Fuck recursion, we're going to loop through clients and see if they are within any obj's or mobs within one iteration.  MUCH cheaper, and probably less buggy.

If someone can't hear everyone and they are within an object and it's not catching?  add it to the list commented for it of type checks.
This is rather ironic...

My VERY FIRST PR, I used it to make ghost chat be bold, instead of using viewers() to figure out
what ghosts could see the mob, I used get_mob_in_view() which sounded pretty descriptive.

Unfortunately for me it was one of the most CPU intensive ways of determining who could view the speaker for this.

So yeah, removing the second get_mobs_in_view and replacing it with viewers()

Yes this code has been in since Oct/Nov time frame :(
pAI / MMI emote fixes.

Fixes #4191
Further optimizations, no need to loop through items with multiple istype checks
Merge pull request #4457 from Ccomp5950/FUCK_recursive_mob_check

Code effeciency project: /proc/get_mobs_in_view - hot