Add const to some methods, comparing a const item pointer is fine.
Implement generic templated item-in-player-possession functions.

Instead of having specific functions for each type of item to search for
(e.g. get_all_drinks, get_all_with_flag, get_with_...) there is a generic
function that can be used with a filter object that controls what items
should be returned.

Combined the two generic item find functions.

Also add generic function to check whether at least one item matches the filter.

Renamed the function according to suggestion by narc0tiq.
Implement a generic player::remove_items_with function.

Similar to the generic function to get points to items in the players possessions.
The generic remove functions remove the item when it matches the filter and return the removed items in a list.

This allows player::i_rem to work with all item pointers returned by the search functions.

Using a std::list as result allows to remove several items at once (e.g. all items of a given type or several charges etc).
Replace player::has_drink and inventory::all_drinks with generic filter function
Use generic item-find function for player::has_mission_item
Change player::remove_mission_items to be compatible to player::has_mission_item

Using the generic remove_items_with function with the very same filter object.
Also removes inventory::remove_mission_items - as it is not called anymore.
Move inventory::all_items_with_flag into the player class

It now uses the new item search functions.

inventory::has_flag ha been removed, it is not used, code uses player::has_item_with_flag instead.
That function also uses (indirectly) the new search function.
Use generic function for has_item / remove_item in player and inventory class.

Also added documentation to those functions.
Made the item pointer const for easier usage.

Used those function in game::remove_item instead of iteration the possession of npc/player.
Removed player::i_rem(typeid)

The function is not used.

Removed inventory::remove_item(typeid), replaced with:
- player::use_amount - which is also compatible with the has_amount check at the top of the function.
- generic remove_items_with to remove *all* items that match, skipping
  the while loop there and keeping the previous behavior.

Added some documentation.
Removed player::i_of_type

The one time it has been used has been changed to use player::items_with.
Removed inventory::has_liquid

The function was not used.
Removed player::max_active_item_charges

It was not used.
Also removed the same function from the inventory class.
Removed inventory::watertight_container

It was unused.
Extract check for LITCIG into a helper function.

Also checking the whole player possessions (including weapon!).
Move has_gun_for_ammo into the player class.
Move reduce_charges from inventory into player class.

Also make reduce_charges(item*) work with any item pointer.
Changed player::has_active_item to use player::has_item_with.

Also removed inventory::has_active_item as it is not needed anymore.
Added documentation.