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.