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.
How about this as a indenting alternative? (Also removed an unnessasary layer of brackets)

    if (this.isAdjacent(pokemon, this.effectData.target) &&
      (!pokemon.hasType('Flying') || pokemon.hasItem('ironball') || pokemon.battle.pseudoWeather.gravity || pokemon.volatiles['ingrain'])) &&
      pokemon.runImmunity('Ground', false)) {