Creature rework (checkpoint)

Just to save a bit on merging pains down the road, and to get wider playtesting on the current state of the rework. Most things should be up to feature parity with pre-rework, with some small exceptions:

* grabs/grabbing techniques and disarms don't work in melee.

What's been done so far:

* `Creature` base class for all things (that move) ever. `Character` base class for the player, human NPCs, and other such dialogue-enabled folk.
* Unified stat/bonus system. All bonuses are calculated once per turn in `Creature::reset_stats` (instead of on-the-fly everywhere), and `Creature::get_<stat>` will automatically include the bonus in the total value. Can also get base in `get_<stat>_base` or just the bonus in `get_<stat>_bonus`. Not fully implemented as a lot of bonuses still occur in e.g. `player::suffer`, but these shouldn't affect anything except the accuracy of the `get_<stat>_base` functions. "Stats" include, but are not limited to, str/int/per/dex, speed, bonus armor, bonus damage, damage multipliers, stealthiness, resistance to throwing techniques, etc.
* Unified combat mechanics (everything but throwing weapons for the player, everything not from `monattack` for monsters). To copy what I said in #4970:

> The idea right now is for all attacks and attack-like things to go through the same code path. These functions are `Creature::melee_attack` + `Creature::deal_melee_attack` for melee, and `Creature::projectile_attack` + `Creature::deal_projectile_attack` for ranged. The `attacking_creature.<x>_attack` functions roll the attack/generate the damage/etc from `attacking_creature` against a specified target, and  `target_creature.deal_<x>_attack` deals an attack with a specified damage and hitroll to `target_creature`, which can then dodge/mitigate the attack.

> All attacks go through one of these, e.g. gunfire goes through `player::fire_gun`, which generates the bullet damage/dispersion values from the player's stats, and then calls `player::projectile_attack` (which then computes the trajectory and calls `Creature::deal_projectile_attack` on whatever gets hit, etc).

* Player diseases and monster effects now unified under Creature effects. About 1/3 of the diseases and all of the creature effects have been converted to the new effects system.
* More fleshed out damage types and resistances. Not all types and resistances are fully implemented (so, e.g. freeze grenades don't do cold damage yet, they just do regular grenade damage, and acid resist doesn't properly protect against acid) but a good deal are in. Borrowing from #2030, the damage types are:

```
    DT_TRUE, // typeless damage, should always go through
    DT_BASH, // bash damage
    DT_CUT, // cut damage
    DT_ACID, // corrosive damage, e.g. acid
    DT_STAB, // stabbing/piercing damage
    DT_HEAT, // e.g. fire, plasma, lasers
    DT_COLD, // e.g. CBM heatdrain, cryogrenades
    DT_ELECTRIC, // e.g. electrical discharge
```

* All the damage types can be mitigated separately, and monsters can resist specific types of them. Damage types now also "carry" special effects, so e.g. all cold/electric damage will reduce moves as well as deal damage, and all heat damage carries a chance of setting you on fire depending on magnitude. These are mostly selected to keep in line with the auxiliary effects from the "old" system (where every instance of electrocution was always accompanied by a moves penalty, etc), but are up for discussion should they seem distasteful to people.
* A lot of combat/damage numbers are now carried in floats, so resistances can work at a higher granularity.
* Since monsters now use the same melee combat mechanics as players instead of special monster combat mechanics, their skills are considered at a -2 penalty when making attack rolls (a fair number of relatively common zombies had melee skills >=8, namely dogs). This is a temporary fix until we fully integrate and balance monsters in the "new" system (wherein they can have real stats).