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
Add hotplate menu to kitchen unit try 1

In my quest to make the kitchen usable as a hotplate to heat food and
cauterize, here's my first try.  Needless to say, it's a disaster,
errors out the wazoo.  Not really sure what I'm doing, just hoping
people who can actually code can tell me how to make this work :)
remove tabs, extra parameters

Trying again, still lots of errors.  I always forget how to deal with
"not declared in this scope"
Revert "remove tabs, extra parameters"

This reverts commit 1991d0b497e6d764148fa2fd8f26e912c9b66ba0.
Revert "Add hotplate menu to kitchen unit try 1"

This reverts commit a09796354a85ab96fed25136931d911d6a9bb759.
try 3

Still pretty confused, trying to implement Kevin's idea to create a fake
hotplate and use it.  Couldn't even find UPS mentioned in vehiclle.cpp,
trying code from map.cpp for other parts of kitchen unit.  I have a
feeling this attempt is just gibberish, but who knows.
Try 4, now with 20% less gibberish!

This may be the first code I've added to this PR that isn't just random
scribbles.  It still doesn't work, of course, but it FEELS less moronic.
Anyway, this adds Kevin's suggestions of turning the string of prompts
into a menu and using the code from vehicle::fire_turret_internal to
create a fake hotplate that uses the vehicle's battery.  I think the
menu part of this is functional, but I still don't know how to make it
actually use the fake hotplate.  I also need to figure out how to
declare the extra functions in the menu.  Here's the list of compile
errors this generated, maybe we can get this sorted out.
C:\Documents and Settings\Mason\My
Documents\GitHub\Cataclysm-DDA\game.cpp||In member function 'void
game::pickup(int, int, int)':|
C:\Documents and Settings\Mason\My
Documents\GitHub\Cataclysm-DDA\game.cpp|7303|error: 'drain' was not
declared in this scope|
C:\Documents and Settings\Mason\My
Documents\GitHub\Cataclysm-DDA\game.cpp|7304|error: 'tmp' was not
declared in this scope|
C:\Documents and Settings\Mason\My
Documents\GitHub\Cataclysm-DDA\game.cpp|7305|error: invalid use of
non-static member function 'void iuse::hotplate(game*, player*, item*,
bool)'|
C:\Documents and Settings\Mason\My
Documents\GitHub\Cataclysm-DDA\game.cpp|7307|error: 'refill' was not
declared in this scope|
||=== Build finished: 4 errors, 0 warnings (0 minutes, 8 seconds) ===|
Progress made! (I think?)

Thanks to Kevin's advice this is down to just two errors!  Here's the
list:
C:\Documents and Settings\Barbara\My
Documents\GitHub\Cataclysm-DDA\game.cpp||In member function 'void
game::pickup(int, int, int)':|
C:\Documents and Settings\Barbara\My
Documents\GitHub\Cataclysm-DDA\game.cpp|7304|error: 'tmp' was not
declared in this scope|
C:\Documents and Settings\Barbara\My
Documents\GitHub\Cataclysm-DDA\game.cpp|7305|error: invalid use of
non-static member function 'void iuse::hotplate(game*, player*, item*,
bool)'|
||=== Build finished: 2 errors, 0 warnings (0 minutes, 10 seconds) ===|

The first error I think is being caused because the code is still trying
to give the tmp_hotplate item to the fake NPC "tmp", who isn't here.  I
think this needs to be given to the PLAYER, because if I add in the tmp
NPC the hotplate will looks for items inthe3 NPC's inventory, not the
players.  So now I need the command to give this to the player, which I
can't figure out.
The second error is from me not knowing how to get Cata to "use" the
fake hotplate we're generating.  so far, all my guesses are coming up
empty, and I can't find an example in the code to copy.
If we can iron these two bugs out, I think this will all work!
Add NPC to hold the hotplate

Adds an NPC to hold the hotplate, as I can't figure out how to give it
to the player.  Still don't know how to actually use the hotplate, I've
tried about everything I can think of.
Trying again

Okay ditched the fake NPC and figured out how to give this to the
player.  Also added the got_water = true line to prevent us going to
examine vehicle.  Problem is now that I've given the hotplate to the
player I can't figure out how to get rid of it afterword.  I tried
u.i.rem but couldn't get it working.  Also still can't figure out how to
set the values in iuse::hotplate to make it compile.