[WIP] [DO NOT MERGE] Saycode rewrite

HIGHLIGHTS:
* All atom/movables can talk and hear!
* Hear() proc added to remove shitty typechecking!
* mob/living/say() is no longer a monolith!
* Removal of duplicates, copypasta and typechecks!
* HEAR flag to determine wether things can hear!
* Languages are bitflags instead of typechecks!
* Faster recursive checks!
* ALL and NONE #defines for bitflag convenience!
* Almost all saycode bugs fixed!
* Removal of the unused silicon/decoy type!

Fixed #699 
Fixed #686 
Fixed #333 
Fixed #3347 
Fixed #263 
Fixed #1420
Fixed #149

Fixed #950 (Considering that this is a complete rewrite, it's probably safe to close this issue, and if it were to happen again it could be re-opened)
Not really. I'll rely on the wisdom of ancient code.
Op 17-aug.-2014 23:50 schreef "Orange Borg" <notifications@github.com>:

> In code/game/say.dm:
>
> > +		return
> > +	send_speech(message)
> > +
> > +/atom/movable/proc/Hear(message, atom/movable/speaker, message_langs, raw_message, radio_freq)
> > +	return
> > +
> > +/atom/movable/proc/can_speak()
> > +	return 1
> > +
> > +/atom/movable/proc/send_speech(message, range, steps)
> > +	for(var/atom/movable/AM in get_hearers_in_view(range, src))
> > +		AM.Hear(message, src, languages, message, steps)
> > +
> > +/atom/movable/proc/say_quote(var/text)
> > +	if(!text)
> > +		return "says, \"...\""	//not the best solution, but it will stop a large number of runtimes. The cause is somewhere in the Tcomms code
>
> Do we have any clue as to the cause of this?
>
> —
> Reply to this email directly or view it on GitHub
> <https://github.com/tgstation/-tg-station/pull/4337/files#r16332370>.
>