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.