Reuse ItemManager constructed in GameStateLoad for GameStatePlay

Fixes #967
Attempt to fix crash when deleting StatBlock

Fixes #1176
Merge pull request #1174 from dorkster/fixes

Reuse ItemManager constructed in GameStateLoad for GameStatePlay
Reset disabled icon overlay clip in actionbar when iterating

Fixes #1180
Prevent item activation on action bar when going from 0 -> 1 quantity

Fixes #1179
Merge pull request #1182 from dorkster/fixes

Reset disabled icon overlay clip in actionbar when iterating
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.