Json traps

Loads trap information from JSON instead of from static initializers. Should be backwards compatible.

Also, whoever wrote the comments asking why certain traps 'drop' null: It was presumably meant to indicate that the trap should drop nothing. It's an empty list now, which should be much neater.