Attempt to fix crash when deleting StatBlock

Fixes #1176
Use get_random_neighbor for map loot
Add another int to Event_Component to better handle loot

This means less conversions from string to int when dropping loot.
Move parsing of "loot" event components to LootManager
Consolidate checkMapForLoot and determineLootbyEnemy into a single func
Allow dropping random loot with quest loot

This commit also prevents dropping multiple loot stacks on the same tile
by temporarily blocking tiles that already have loot on them.
Pass Event_Component list for parseLoot by pointer instead of reference
Add support for loot table files

Loot table files must be placed in a folder titled "loot" in the base of
the mod directory.

Here is an example loot table file that uses both shorthand and long
form notation for loot:

```
loot=currency,25,1,100

[loot]
id=1
chance=10
quantity=1,2
```

Please note that shorthand usage can not happen after any [loot]
definitons.

To use loot tables, simply refer to them when defining "loot" keys in
map/npc events or in enemy definitions, like so:

```
(generic low-level loot)
loot=loot/low_level.txt

(dagger)
loot=32,5,1
```
Add drop_max and drop_radius options to engine/loot.txt

- drop_max specifies the maximum number of rolls that occur when we drop
loot. If we have a drop_max of 4, this means we can potentially drop up
to 4 pieces of random loot in a single loot event. "Fixed" loot is
unaffected by any of this.
-drop_radius is the distance (in tiles) from the point of the loot event
in which loot can drop. By default this is 1, but as drop_max is
increased, it may make sense to increase this value.
Use special formatting for speed in item set bonuses
Pass a reference to an EffectDef to EffectManager::addEffect()

This is cleaner than passing a bunch of individual variables to that
function.
Simplify code for stacking effects

- When adding an effect that could not stack, we would try to apply the
magnitude and duration of the new effect to the old effect to "refresh"
it. Now, we simply remove the old effect and proceed to add the new
effect. This is much clearer code-wise.
- The "additive" property for effects has been replaced with
"can_stack", which is a more accurate variable name.
- Shields can be stacked now. Damage will be done to the oldest shield
first.
Support loot table files for repeated loot

This allows us to have lines like:
```
loot=currency,fixed,50,100;loot/leveled_high.txt
```

Note that the loot table file must come last, and as such, only one loot
table file is supported per `loot=` line.
Handle multiple loot table files in a single "loot=..." line
Fix bugs with 46fb43

Fixes #1186

Sorry about this one. Needed to reset items to NULL after
deconstructing. Also, GameStateNew now reuses the ItemManager if it was
constructed in GameStateLoad.
Merge pull request #1187 from dorkster/itemmanager_fix

Fix bugs with 46fb43
Merge pull request #1185 from dorkster/effects

Effects improvements
Merge pull request #1178 from dorkster/testing

Attempt to fix crash when deleting StatBlock
Merge pull request #1183 from dorkster/loot_change

LootManager improvements
NULL-ify shared game resources on gameplay exit

This prevents a segfault when exiting GameStatePlay and then entering
GameStateLoad.