Extend crafting inventory

Allows using items that are stored inside worn items.

The first commit moves the whole use_charges/use_amount, amount_of/charges_of code into the item class. So it's all in one common place and not littered all over.

It also makes it easier to recursively go through all contents of an item (see inventory.cpp: the code in `use_charges` appplies the same changes to the content and to the item itself, but is typed out twice).

Also the functions in item are available for everything. For usage on the worn items (see second commit), one had to duplicate the already existing code in invetory.cpp, or the (already being a duplicate) code that handles charges taken from the wielded item.

The functions are simply recursive and will therefor consider all their contents of all types of items.

The second commit does the requested usage of the worn items content (like knifes in boots). It does explicitly not use the worn item itself. That would be easily possible but I suppose it's not very desirable, as it may use up worn clothes without a warning.