Refactor iuse methods and callers to return the number of charges used instead of draining charges themselves.
Wrapped iuse function pointers in iuse_function class.

This has two goals:
- Better abstraction of iuse's, making it easier to later add lua iuse's
- The ability to do some pre-/postprocessing on iuse's, including common cleanup tasks like applying used charges etc., for this iuse_function::call can be modified
Bring iuse refactor up to date with mainline.

Conflicts:
	iuse.cpp
	player.cpp
Merge branch 'iuse' of https://github.com/CIB/Cataclysm-DDA into refactor-iuse
Add a virtual accessor for number of charges.
Revert iuse helper functions to returning bool.
Convert iuse return value from weird bool-like thing to returning the number of charges to deduct.
Rearange player::eat to only apply effects of consuming items if the iuse didn't fail.
Merge branches 'refactor-iuse' and 'refactor-iuse' of https://github.com/kevingranade/Cataclysm-DDA into refactor-eating
 Added player::consume() method, which is common for eating/consuming.
 Added player::my_eat() method. my_eat() is temp method which
replaces only eating behavior. In future my_eat() shuld renamed to eat()
and consume shuld replace old eat().
 Old eat() method removed.
 New consume() method is used instead of old eat().
 For food and drinks comestable items new eat() method is used.
known issues:
 consume() don't check return value of eat() method.
 consume() right now support only 'FOOD' and 'DRINK' comestible types.
 player::consume works with "MEDS"
 player::consume check return value of eat.
sporadic style cleanups.
Grammar correction.
Use moves when consuming ammo or books.
Brace yourselves
Merge latest from mainstream.

Conflicts:
	game.cpp
	iuse.cpp
	iuse.h
Merge pull request #3516 from kevingranade/refactor-iuse

Refactor iuse methods and callers.