Store crafting components of the item.

Adds the components list to item class. This contains the items that were used to create the item.
It is set during crafting and retrieved during disassembling.
Also stores it in savegame and shows it in item info.
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.
Add check for enough charges when disassembling.

Used components are not stored for items that are counted by charges. Those items are merges into one item which screws up that setting.
disassembling yields charges only for stuff not crafted by player
extract local variable item_pos for readability.

fix bug where wrong charges would be subtracted from disassembled stack
Merge storing crafting components in crafted items for retrieval upon dissasembly.