Addresses issue #1667
Choosing not to study still reads the book for one step
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
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.
Added pack size support for spawning monsters.
Crows were way more difficult than made sense. Difficulty reduced to zero.
Added pack sizes for animal spawns.
Enabled pack spawning for static spawn.
mapdata: add map_bash_info struct which abstracts the weird map::bash
logic:

    int str_min;          // min str(*) required to bash
    int str_max;          // max str required: bash succeeds if str >= random # between str_min & str_max
    int str_min_blocked;  // same as above; alternate values for has_adjacent_furniture(...) == true
    int str_max_blocked;
    int num_tests;        // how many tests must succeed
    int chance;           // optional: must pass 1-100 chance to attempt the above tests
    std::vector<map_bash_item_drop> items; // list of items: map_bash_item_drop
    std::string sound;    // sound made on success ('You hear a "smash!"')
    std::string sound_fail; // sound  made on fail
    std::string ter_set;    // terrain to set (REQUIRED for terrain))
replace huge map::bash case statement with json; terrain & furniture have 'bash' object
Nerf door blocking
Removed hardcoded spawning of wolves and cougars.
Caltrops first pass.
Finishing.