Makes data huds passive

Previously, HUDs updated the HUD images for every single mob in view() of a HUD user every single tick.

With this update, all the HUD will do is add all mob HUD images to the client. Image updating is now handled by a series of hooks included in data_hud.dm and called as needed by other procs.

This should make HUDs more responsive and less laggy. This has been somewhat tested, however there are bound to be bugs because it relies on certain procs being called whenever stuff like health or arrest status has changed. I tried to catch 'em all but there's probably some I missed.
This isn't an issue of performance, to be honest. Performance is a secondary concern to code quality for me most of the time (and these HUDs gain a quite a lot of performance just from using the observer/listener paradigm instead of active updates). If we only cared about performance we'd be using colons everywhere because it's faster, even though it makes code terribly unsafe, and, to be honest, defining a /atom prototype that is only overriden in /mob/living/carbon/human is no different than using a colon in my point of view (because it causes exactly the same problems). In other words, I disagree that istype() is a bad choice here.