Adds NODROP, removes canremove, merges all unequip procs into u_equip

This PR is far from done.
Either way, we've basically got NODROP, which is like canremove except it works for everything.
The main drawback is that you can't have masks that tighten themselves to your face or cursed rings or stuff unless there's a proc that is called upon equipping.

Either way, this removes before_take_item() and drop_from_inventory() and replaces them with u_equip() (i used a dumb replace but it should be fine.)

It also removes stupid shitty copypasta from drop_l_hand and drop_r_hand, which now simply do return u_equip(r/l_hand)

The thing is: for NODROP to work properly and not cause issues, most things that call u_equip right now should do this:
```
if(!u_equip(W))
    return
```

or the same with del W instead of return.
I estimate that all calls of u_equip(), combined with all calls of drop_r_hand(), drop_l_hand(), drop_active_hand(), drop_inactive_hand() and drop_item() is probably over 500 calls to all of these, so I really need help to code this.

The only way this can realistically be tested is pretty much to put it live on the servers and hope nothing explodes (nothing should but w/e)

also this probably has merge conflicts but this changes SO MUCH FUCKING SHIT that i'll only fix them once this is ready to pull

Fixes #2792