Added weapon.js which represents a weapon that can be fired, reloaded, rendered etc.