Fix AttackCharge not picking a new target if the current became invalid

This fixes #5568 by adding a IsReachableTarget check to properly handle units that walk out of range.