Click code rework

Fixes #646, #579, #863, #1164, #1202, #1129, #247, #136 

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 mob/next_click.

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 with ghost interactions 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.

## Possible exploit notice

afterattack() had a couple quirks in previous click code that no longer exist.  Previously, afterattack was called:
* In melee range, after attackby(), unless attackby() returned 1
* At any other range, only if the item used the USEDELAY flag

The third argument to attackby, previously called "flag", was 1 if you were adjacent and 0 otherwise.  However, flag was not always checked because it didn't need to be.

USEDELAY is no longer being used for this, so afterattack() will now be called consistently at range.  Check the third parameter (I call it proximity wherever I inserted it) to see if you are adjacent or not.  This should be fixed on all instances of afterattack() in tgcode, branches will need to make sure they do the same.

Where this is not fixed, actions will happen without range checking (such as splashing people with beakers, etc).

### Telekinesis Update

This adds two atom procs, attack_tk() and attack_self_tk().  attack_tk is used as per attack_hand; attack_self_tk exists on all atoms (not just items) but is similar to the item proc, but without the assumption that it is in the user's hand; it is used to activate things that can be thrown

Removes the functionality where entering throw mode would create a tk grab, as it is redundant.

As a default, attack_tk currently does the following:
* Creates a telekinetic throw for items and un-anchored objects
* Does an attack_hand (paw, animal, etc) for anchored objects
* Does nothing to mobs

As a default, attack_self_tk does nothing.  An attack_self_tk was added to closets to open and close them since that's a common thing.  This can be used to activate certain items telekinetically, but I didn't want to default that to on.

### Gloves Update

This update removes the snowflake code around ninja gloves, and as a consequence allows things like stungloves and other special-purpose glove touch effects without substantial overhead.  Currently, however, the ninja gloves are the only ones that use it.  This update integrates seamlessly with the rest of click code, as it is part of human/UnarmedAttack().  The glove proc called there is Touch(), and returning 1 from that proc will cancel the normal attack_hand().

The ninja glove code that I inserted could probably be done better if someone wants to redo it.  It can be found in clothing/gloves/ninja.dm

-- 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.  Note that the standard 1 second delay applies even with no object in hand; NODELAY would be some sort of hyperspeed that only exists when using the item, but applies to all uses of the item, even putting it in a backpack.

I have removed NODELAY, because almost nothing should be used multiple times per second.  It could be easily readded in branch code, but I doubt anyone is going to use it.

USEDELAY was never used the way it was intended, however the flag was applied to items and affected how they interacted with afterattack().  This change was removed (see above) and I added USEDELAY as a half-second increase for now, rather than the full extra second, although this can also be changed.

For the time being I have removed USEDELAY from all tg objects.  The flag should be readded on objects that are bulky, etc.