rangeweapon: add cooldown
player can use only one item at a time
create BulletType
ItemFactory: throw error if the descriptor is invalid
Item: use descriptor to compare items
add AmmoPackItem, used by RangeWeaponItem