Addresses issue #1667
Choosing not to study still reads the book for one step
advanced_inventory: choose amount of charges on pickup. item.charges(): 2 optional arguments for output precision.
No point in asking if you can't pickup a single charge.
Merge, and compensate for definition of itype.volume that is completely geschtonkenflapped:
Merge item::volume precision and unit arguments with
 item-with-charges-volume-scale-defined-by-max-charges-which-is-named-stack-size
behavior. precise_value now returns multiple of 1000, since the current maximum item::max_charges() / stack_size(.json)
is 200.
Merge remote-tracking branch 'origin/imagefonts'
Merge remote-tracking branch 'upstream/master'
[WIP] Framework for determining part power usage
Adds power requirement for headlights
Adds vehicle alternators and car battery spawns
Merges master branch changes to vehicle parts
Added option to spawn zombies at shelter
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
Update alternator and car battery PR.

Conflicts:
	data/json/items/melee.json
	data/json/vehicle_parts.json
	data/json/vehicles.json
	lightmap.cpp
	savegame_json.cpp
	veh_typedef.cpp
	vehicle.cpp
	vehicle.h
Tab removal.
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.