Refactor loading of bullets and weapons

Combine two-stage loading in one function
Split JSON loading functions so non-file
sources can be used (#274)