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.

Partially addresses #4040 (does not fix completely because antag huds are untouched)
I agree that defining them in /atom would be silly. After all, we do have
attackby(), which I not very OOP.
Op 16-nov.-2014 16:27 schreef "tkdrg" <notifications@github.com>:

> In code/game/gamemodes/changeling/powers/revive.dm:
>
> > @@ -25,5 +25,9 @@
> >  	user.status_flags &= ~(FAKEDEATH)
> >  	user.update_canmove()
> >  	user.mind.changeling.purchasedpowers -= src
> > +	if(istype(user, /mob/living/carbon/human))
> > +		var/mob/living/carbon/human/H = user
> > +		H.med_hud_set_status()
>
> For some procs it makes sense to be in /atom (such as singularity_pull or
> emp_act), since they need to be overriden for all kinds atoms. This is not
> the case here, as only mobs can have a data HUD. Thus, it would be
> unnecessary. The (small) performance hit from typecasting is worth the
> added safety and cleanliness. istype() is bad when it is abused (such as in
> istype(src, type) ), it is not inherently more or less OOP. Given that
> these are not mob procs, overriding them at the /human level is not
> possible. I can swap most of them to overloaded procs, I suppose, if that's
> what you want, though I personally think that would be less readable.
>
> —
> Reply to this email directly or view it on GitHub
> <https://github.com/tgstation/-tg-station/pull/5908/files#r20410338>.
>