Fix a bug that I stupidly overlooked.

It would skip a stack of items when the current stack has been completely erased.
Fix a bug in use_charges_from_map_or_vehicle.

It would set quantity to some negative value, instead of only decreasing it.
Rewrite game::complete_disassemble to clean up.

Dissasemble uses either the first component (of alternatives components) or one in the components list of the item.
Refactor game::consume_items,

Easier to read and contains fewer code duplication.
Also condense items that are counted by charges to one item in the result list.
remove_ammo: remove removed ammo from item.