Fixes #1147 - type-mismatch

Added helper: /proc/findchar(haystack, needles, start=1, end=0)
works like findtext except it finds the first occurrence of one of the characters from the needles string, within haystack.

Permissions can now be removed as well as added, by replacing the + with a -. e.g. +BAN adds bans permissions, -BAN removes them. This applies to admin_ranks.txt and the permissions panel.

Verb overrides are now possible for admins_ranks. Specific verbs can be forced-on, or forced-off via keywords like +/client/proc/mimespeak or -/client/verb/ooc. This applies both to admin_ranks.txt and the permissions panel. SQL system is not compatible.

admin_ranks are now datums. This means admin_ranks actually behave more like permission groups as intended.
When you temporarily modify an admin's permissions via the permissions panel, their rank_name is appended with "([ckey])". This prevents modifications to their rights affecting everyone.

admin rank names now support - _ and @ characters (since ckeyEx() does not strip these).

SQL permissions system was modified. SQL databases will have to be updated or they will no longer work.

WARNING: admin_ranks.txt and admins.txt format has changed slightly! You will need to redo those txt files!
PDA Painter Machine
-Adds the PDA painter, which lets you change the appearance of the inserted PDA. Good for job-changes and possibly traitor disguises?
-Cleans up pda.dmi, moves the ai card and pai device sprites to their own .dmi. PDA box sprite moved to storage.dmi where it belongs.
Moving a check so the color choice window doesnt pop up if there's no power
Added the voice analyzer from #581 to the autolathe and assistant vending machine.
makes my code more good
adds a parent call in the new()
Merge branch 'master' of https://github.com/tgstation/-tg-station into addvoiceanalyzer

Conflicts:
	html/changelog.html resolved using their entire file
Alphabetized emote code and added help emotes to borgs and slimes

Also fixed erroneous view calls
Merge pull request #1215 from JJRcop/emotes-help

Prettified emote code, added "*help" to cyborg and slime
Merge pull request #1191 from Cheridan/PDA

PDA Painter Machine
Merge pull request #1211 from dumpdavidson/addvoiceanalyzer

Added the voice analyzer from #581 to the autolathe and assistant vendin...
Muzzle and spear sprites fixed.
Merge pull request #1234 from Sishen1542/master

Muzzle and spear sprite edits.
Merge pull request #1166 from Carn/admin_ranks

Fixes #1147 (type-mismatch) +features
Click code rework

Fixes #646, #579, #863

Completely redoes the click code.  Moves all click related code into code/_onclick for reference.  Also moves hud datum code and all the screen object code I could find into code/_onclick/hud, as it is related.  Item attack(), attackby(), afterattack(), and attack_self() have been moved into item_attack.dm for consistency.

Completely removes dummy objects and adds atom.Adjacent(user).  This proc checks for border items and anything marked with throwpass for determining whether or not you can reach a given square.  A turf helper, ClickCross(), was added to facilitate this.

Removes the monolithic Atom.Click() proc in favor of an overridable click handler attached to mobs.  Click code no longer uses the : path operator as a consequence, and mob/lastDblClick has been moved to Client/next_click.  A few end arounds were necessary (screen objects, buildmode, and spells), but this has been handled by repurposing Atom.Click(); if you have special click code, insert it in the object's Click() function and return 1 to prevent normal processing.

This update adds support for attack_ghost(); the previous "new" click handler had support for it but was never finished.  I have taken the liberty of letting ghosts click portals, the gateway, and the teleporter to jump to the intended target square, and kept the previous default action of examine()ing every damn thing you click.  It is to be suggested that you could do more with this proc when ghost interactions are enabled.

This update also adds support for double clicking.  It is currently only used for ghosts and AIs, because the original (first) click still registers normally.  For both of these, double clicking a square will jump you to it, and double clicking a mob will follow it.  In the case of ghosts, double clicking bots and the singularity will also set you following it; if you double click your own corpse, you will re-enter it; this also works if your body is in a closet, sleeper, DNA scanner, etc.  Default mobs ignore double clicks as normal.

-- NOTE --

There are two flags which were previously unused or misused by click code: USEDELAY and NODELAY.  Ostensibly, USEDELAY would double the normal 1sec delay, and NODELAY would remove it.

Using either of these flags as intended would significantly affect the timing of the game.  In particular, USEDELAY is currently applied to guns and about everything else that acts at range.  I am adding USEDELAY as a half-second increase for now, but I have not put a significant amount of thought into it.  I considered lowering the normal 1sec delay to .8sec to balance it, but the consequences of that on combat involve more calculations than I care to make.

NODELAY seems to never have been used, and I did not implement it, but I could do so trivially.
Adds click delay to item quick buttons.  Updates changelog.
Fixes NOBLUDGEON flag

Apparently bitflags only work for up to 32768; bitflag 4 SEEMS unused so I have commandeered it.

Also, it apperas the TABLEPASS flag (as distinct from passflags PASSTABLE) does absolutely nothing, but I am not going to remove it here.
Adds an alt-click to vents for mobs that can ventcrawl.

Reorganizes the ventcrawl code to be a little flatter.

Removes the attack_animal default from slime attacks.  Apparently some code had assumptions about animals and I don't want to get into what that all is yet.
Reverts a change made redundant by #1217

rebasing accidentally made two copies of the function in living.dm, removes the ones I added.
Timing adjustments

attack_self use should be somewhat more standard; previously the activate object verb (and pagedown) had no delay at all.

Lowers the time taken when interacting with things on your person or in your square.