[WIP] 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.
This is begging to be pulled out into a helper:
```
void extract_effect( JsonObject &j, std::string mod_type,  std::pair<int, int> &mod_value)
{
    if(j.has_member(mod_type)) {
        JsonArray jsarr = j.get_array(mod_type);
        mod_value.first = jsarr.get_int(0);
        if (jsarr.size() >= 2) {
            mod_value.second = jsarr.get_int(1);
        } else {
            mod_value.second = mod_value.first;
        }
    }
}
```