Move ALL guns to JSON

Move all 74 guns to JSON (in data/raw/items/ranged.json), and add associated changes to make it work. Initialization order had to be rejiggered slightly, so that skills were actually defined by the time guns needed them.

Also added a range field to the gun definitions in JSON, which is currently ignored and set to 0 for all guns. The plan is to use that for gun-based range adjustments (rather than defining it purely in ammo - useful for, e.g., bows). Did it in this commit because I was parsing all the gun definitions anyway, and it was trivial to add another field to the script.

Did NOT remove the GUN() macro, because there's still an outstanding pull request which adds more gun-type items.