Moved tests from QueryAdvancedTests to QueryIndexMigrationTest 

Moved several tests from QueryAdvancedTests to QueryIndexMigrationTest and refactored them.
Logging if partitions changed while query was running.
Changed remote call in QueryOperation to local hasOnGoingMigrationLocal.
Introduced TimeConstants to make timeout definitions more readable in tests.

What is the purpose of this logging? Is it just to see behavior during development/testing or is it meaningful for user? Should we retry the query operation if version changes?