Negative stats

This removes all direct *write* access to `Creature::(str|int|per|dex)_cur` (aside from inside `Creature`).

It makes addiction and some other code in `player::suffer` use `mod_*_bonus`, because writing to `*_cur` directly would have been overridden in `Creature::reset_stats` anyway (test addictions, they don't change stats).

Made `Creature::get_stat` return positive values only. This fixes the display glitch. It also fixes the weight capacity glitch because that function uses `get_str`.

Removed the code at the end of `player::suffer`, because that is done at the end of `Creature::reset_stats`.

Processing artifacts is currently done as part of processing active items. It uses the `mod_*_bonus` functions now, but it has to reset the `*_cur` values as those are used all over the code.

Shouldn't all code use `get_int` instead of `cur_int`?

Fixes #6069