Made mutation categories actually matter.

The primary mutation category now has significant influence. Traits from
other categories have a high chance of being removed. It is now very
difficult to end up with every single trait in the entire game.
Mutagens that cause mutation only in specific categories.

There are still a lot missing.
Added the remaining specific mutagens.

For now they use very general recipies.
Add support for elevators to game::nertical_move().
Call game::vertical_move() from iexamine::elevator() instead of trying to shift levels manually.
Sort inventory by item charges, use low-charge items first

FINALLY got it so that low-charge items will consistently be used in favor of high-charge items.

Doesn't do anything for matches vs. lighter use, though (since it also sorts by item ID).
Change X-Acto knife description

Closes #1451
Use the prescribed method for converting from a string literal to a char*
Use an explicitly unsigned char variable for array access
Remove the unused (and unlikely to be used) OutputText function
Use absolute-value based range calculation when circular distances is turned off.

If circular distances is on, use the old trig-based range calculation. 

If circular distances is off, use either the distance along the x axis or the distance along the y axis as the range value (whichever is bigger), because that's how non-Euclidean square-tile based systems work.
Changed trig_dist to rl_dist for range calculations

This should ensure both circular distances and roguelike distances use proper range calculations.
ranged.cpp: target: Players can no longer aim horizontally beyond
the weapon's range if circular geometry is enabled.
Add missing semicolon
Signed off.
Save on sleep?
Option to save game before sleeping.
Sets values for autosave.
options.cpp styled using current ruleset.

Signed-off-by: D Lue Choy <dluechoy@>
Despawn monsters when we change z-levels, and handle sticking them in the stair queue properly.
Batch of bugfixes.

Conflicts:
	SIGNOFF
Nest trig_dist() in rl_dist() instead of replicating the implementation.
Don't clear the npc list while saving

Fixes #1336