refs #544 SERVER-8790 Move QueryPlanSelectionPolicy to a new file.

Conflicts:

	src/mongo/SConscript
	src/mongo/db/namespace_details.h
	src/mongo/db/queryoptimizer.cpp
	src/mongo/db/queryoptimizer.h
	src/mongo/db/queryoptimizercursor.h
	src/mongo/db/queryoptimizercursorimpl.cpp
refs #544 SERVER-8790 Move QueryPlanSummary to a new file.

Conflicts:

	src/mongo/db/namespace_details.h
	src/mongo/db/ops/query.cpp
	src/mongo/db/queryoptimizer.cpp
	src/mongo/db/queryoptimizercursorimpl.cpp
refs #544 SERVER-8790 Move QueryPlan to a new file.

Conflicts:

	src/mongo/db/ops/query.cpp
	src/mongo/db/queryoptimizer.cpp
	src/mongo/db/queryoptimizer.h
	src/mongo/db/repl/finding_start_cursor.cpp
	src/mongo/db/repl/finding_start_cursor.h
	src/mongo/dbtests/repltests.cpp
refs #544 SERVER-8790 Rename queryoptimizer to query_optimizer_internal.

Conflicts:

	src/mongo/SConscript
	src/mongo/db/dbcommands.cpp
	src/mongo/db/query_optimizer_internal.cpp
	src/mongo/db/query_optimizer_internal.h
	src/mongo/db/query_plan_selection_policy.cpp
	src/mongo/db/queryoptimizercursorimpl.cpp
	src/mongo/db/repl/oplog.cpp
	src/mongo/dbtests/perf/perftest.cpp
	src/mongo/dbtests/queryoptimizercursortests.cpp
	src/mongo/dbtests/queryoptimizertests.cpp
	src/mongo/dbtests/queryoptimizertests2.cpp
	src/mongo/dbtests/queryutiltests.cpp
	src/mongo/s/d_migrate.cpp
	src/mongo/s/d_split.cpp
refs #544 SERVER-8790 Move NamespaceDetailsTransient::getCursor() and NamespaceDetailsTransient::bestGuessCursor() to getOptimizedCursor and getBestGuessCursor.

Conflicts:

	src/mongo/SConscript
	src/mongo/db/commands/distinct.cpp
	src/mongo/db/commands/group.cpp
	src/mongo/db/commands/mr.cpp
	src/mongo/db/dbcommands.cpp
	src/mongo/db/dbhelpers.cpp
	src/mongo/db/namespace_details.h
	src/mongo/db/ops/count.cpp
	src/mongo/db/ops/delete.cpp
	src/mongo/db/ops/query.cpp
	src/mongo/db/ops/update.cpp
	src/mongo/db/pipeline/pipeline_d.cpp
	src/mongo/db/queryoptimizercursorimpl.cpp
	src/mongo/dbtests/cursortests.cpp
	src/mongo/dbtests/queryoptimizercursortests.cpp
	src/mongo/dbtests/queryoptimizertests2.cpp
SERVER-8790 Label QueryPlanSummary as struct rather than class for windows build.
refs #544 SERVER-8790 Move ParsedQuery out of queryutil and clean some includes.

Conflicts:

	src/mongo/SConscript
	src/mongo/db/clientcursor.cpp
	src/mongo/db/geo/s2cursor.cpp
	src/mongo/db/geo/s2cursor.h
	src/mongo/db/ops/query.cpp
	src/mongo/db/pipeline/pipeline_d.cpp
	src/mongo/db/query_optimizer_internal.cpp
	src/mongo/db/query_optimizer_internal.h
	src/mongo/db/query_plan.cpp
	src/mongo/db/queryoptimizercursorimpl.cpp
	src/mongo/db/queryutil.cpp
	src/mongo/db/queryutil.h
	src/mongo/db/repl/finding_start_cursor.cpp
	src/mongo/db/repl/repl_reads_ok.cpp
	src/mongo/db/scanandorder.cpp
	src/mongo/dbtests/queryoptimizercursortests.cpp
	src/mongo/dbtests/queryoptimizertests.cpp
	src/mongo/dbtests/queryoptimizertests2.cpp
	src/mongo/dbtests/querytests.cpp
	src/mongo/dbtests/repltests.cpp
refs #554 SERVER-8790 Add queryutil include required for MultiPlanScanner.
Also include a fix for MvccDictionaryTooNew on an empty collection using
DummyCursor

Conflicts:

	src/mongo/db/query_optimizer_internal.h