Sky Drop refactor and bug fixes

- Changed Sky Drop to use onTryHit on its first hit as well as its second,
  allowing it to check for Protect and Fly naturally.

- Added messages when a Pokemon is freed from Sky Drop.

- Allow Flying-type Pokemon to be hit by Sky Drop if their Ground immunity
  has been removed.

- Added BeforeMovePriority to allow Sky Drop to interact with Stance
  Change properly.

- Prevent a Pokemon trapped by Sky Drop from Mega Evolving.

- Added onRedirectTarget to allow Sky Drop to interact with Ally Switch
  properly.
Are we absolutely 100% sure `source.volatiles['twoturnmove']` will always exist?