Revamp effectiveness calculation

- Implement BattlePokemon#runEffectiveness, accounting for battle events.
- Refactor Tools#getEffectiveness accordingly.
- Remove Inverse mod. It's now implemented using the global event 'Effectiveness', and with a few changes in the base data for hazards and Arena Trap.
- NEXT: Fix Filter and Solid Rock not accounting for the special effects of Freeze Dry and Flying Press.
Similarily


    if (this.isAdjacent(pokemon, source) &&
      (!pokemon.hasType('Flying') || pokemon.hasItem('ironball') || pokemon.battle.pseudoWeather.gravity || pokemon.volatiles['ingrain']) &&
      pokemon.runImmunity('Ground', false)) {