Centralize N_D2_* constants in bm.h
Use array<> for weapon_info fields
Refactor weapon_info_read_n

Fix potential for initializing .children to wrong value with old data
files.  Currently, this cannot be hit because no caller uses the right
combination of arguments to cause it.

Rely on partial_range to report invalid custom files.
Write weapon_info carefully
Adjust Player_num checks for unsigned Player_num