SERVER-5099 Convert Unicode text on Windows command line for mongos.exe

For the Windows version of mongos, switch to a Unicode "wmain()" entry
point and convert Unicode characters on the command line to UTF-8.  Move
previous main() to a new mongoSMain() routine so it can be called from
both main() and wmain().  Clean up header list.
SERVER-5099 Convert Unicode text on Windows command line for test.exe

For the Windows version of test, switch to a Unicode "wmain()" entry
point and convert Unicode characters on the command line to UTF-8.  Move
previous main() to a new dbtestsMain() routine so it can be called from
both main() and wmain().
SERVER-8790 Move QueryPlanSelectionPolicy to a new file.
SERVER-8790 Move QueryPlanSummary to a new file.
SERVER-8790 Move QueryPlan to a new file.
SERVER-8790 Rename queryoptimizer to query_optimizer_internal.
SERVER-8790 Move NamespaceDetailsTransient::getCursor() and NamespaceDetailsTransient::bestGuessCursor() to getOptimizedCursor and getBestGuessCursor.
SERVER-7159 Unit tests for record size quantization and record allocation.
SERVER-4940 Update the repl16 test so it will trigger the appropriate behavior in the current mongo shell.
SERVER-5848 Additional tests.
SERVER-7573 SERVER-4661 Add test for mongos detecting RS failover when primary loses network connectivity
SERVER-8974 $geoNear alias for $near now works with 2d indexes. Was throwing uassert 13464 before.

Signed-off-by: Ian Whalen <ian.whalen@gmail.com>
SERVER-8790 Label QueryPlanSummary as struct rather than class for windows build.
SERVER-8790 Make paddingFactor type explicit for 32 bit rhel buildbot.
SERVER-8790 Visual Studio -- add and rename files
SERVER-7692 modifed to build subscriber edition
SERVER-8676 Macroize 'hash' namespace detection in platform, use for s2
SERVER-8861 Avoid forming iterator to before begin
SERVER-8467 Avoid ambiguity formed by explicit instantiation
SERVER-8467 Fix unused if condition is false warning, and use mask correctly