Effects Update 1

This PR hopes to reestablish some of the basic moddability of effects that my old health PR attempted to accomplish before becoming bogged down.

However I currently seem to be getting some random seg faults, can anyone help to spot the cause? Stacktraces are proving fairly inconclusive on my end, just spouting out long strings of alphanumeric characters and ???'s.
The function modifies the effects map (if `bp == num_bp`), thereby invalidating the `maps` iterator, that you use here. You could change `effects.erase( eff_id );` in remove_effects to only clear the map `effects[eff_id].clear()`.

That would also be consistent with the other case (`bp != num_bp`) where it might leave an empty entry in the effects maps (`effects[eff_id]` still exists, but is an empty map, the iterator `maps` points to this empty map and is still valid).