Allow eating from worn containers / items.

Changes are:
1. get selected item via player::i_at, using only the item position, which includes worn items.
2. check the content of that item or the item itself for being food instead of duplicating that for weapon and inventory item.
3. get the it_comest pointer from the selected item as final step.
4. display message for empty worn container.
5. drop empty containers from main inventory (not worn, not wielded) if the option says so.
Fixes optical cloak's description.

Since you no longer need to activate the UPS itself.
Implemented the item slot for books:

Convert functions in player to use const itype references instead of non-const pointers.
Apply astyle to Item_factory::set_use_methods_from_json
Load use functions directly into a vector,

instead of loading it into an itype pointer (in the use_methods array of the itype that the pointer points to).
This allows the function to be used without an itype pointer, just with a vector of iuse_functions.

Also move the check for the existence of the requested member into the function itself to avoid writing the member name twice.

And use the json objects for error reporting instead of debugmsg.

And fix a possible bug: use the member parameter instead of the fixed string "use_action".
Give books their own use functions vector.

This allows items that are tools and books to have different use functions, one (directly inside the itype) for the tool part and one in the islot_book for the effects that happen after reading the book.
Because reading only triggers the effects in the book specific use function, the martial arts style book need to set up book data to specifically write those iuse functions.
Make the macguffin item a proper book item.

Use the books use_function to call the macguffin function.
Move the unread chapters number into an entry in item::item_vars.

Add some chapter functions to the item class. The number of unread chapters is stored with the id of the player character, so different player characters on the same world can read the same book independently.
Rename islot_book::type to skill.

Extract the skill into a local variable when using it in the two read functions in player.cpp, so one does not need to repeat the islot_book pointer.
Check the skill for being null (which is quite likely), it won't cause a crash most of the time as player::skillLevel "allows" it. In fact player::skillLevel will just create a new skill level for the null-skill and return that.

It's far more obvious what is meant by someItem.type->book->skill instead of someItem.type->book->skill.
Make the remaining members of islot_book ints

No point in having them all be of different signedness and size. int is good enough for everyone.
Adds rebar to pavement, sidewalk, and concrete.

Adds 0-4 rebar per tile.

Can be retrieved using a pickaxe or jackhammer.
Recipe tweak for jackhammers.

Since it generally takes a jackhammer to get rebar in the first place,
this allows an extra option in the form of some scrap.
Adds fatigue restoration effect to crystal meth.

Because IRL, people on this stuff stay awake for days, sometimes weeks
on end.
Sidewalks nixed, bridges boosted.
Merge branch 'drink-from-container' of https://github.com/BevapDin/Cataclysm-DDA into merge2
Merge branch 'book' of https://github.com/BevapDin/Cataclysm-DDA into merge2
Merge branch 'cloakfix' of https://github.com/Rivet-the-Zombie/Cataclysm-DDA into merge2
Merge branch 'jackhammer' of https://github.com/Rivet-the-Zombie/Cataclysm-DDA into merge2
Reduces encumbrance of smallest canteens and waterskins.
Merge branch 'methfix' of https://github.com/Rivet-the-Zombie/Cataclysm-DDA into merge2