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. 
Maybe specify true for allowMove? It won't change any results with our current setup but if someone decides to create a mobile unit with AttackCharge it'll do the wrong thing.