Fix windows build, reorder includes in random.h to follow our conventions.
PseudoRandom isn't seedable on windows
fix random_test.exe on Windows
really fix Windows compile for PseudoRandom (thoroughly tested)
SERVER-8488 Re-enable support for Windows XP.

The strategy here is to use the one available 64-bit intrinsic for Windows XP, which is
_InterlockedCompareExchange64, and then hand-roll our own implementations of the other
primitives in terms of _InterlockedCompareExchange64.
SERVER-8969 Support specifying minimum windows version to build

Conflicts:
	SConstruct
SERVER-9809 Introduce mongo-wide ProcessId type.

Conflicts:
	src/mongo/platform/SConscript
SERVER-9809 Replace getpid() with ProcessId::getCurrent() and pid_t with ProcessId.

Conflicts:
	src/SConscript.client
	src/mongo/db/db.cpp
	src/mongo/db/instance.cpp
	src/mongo/s/server.cpp
	src/mongo/shell/shell_utils_launcher.h
SERVER-9410 Permit use of Interlocked operations on Windows Server 2003
SERVER-9410 Establish minimum as default for NTDDI_VERSION, not just _WIN32_WINNT
SERVER-10074 Fix compiler warning in rotatable_file_writer_test for win32.
SERVER-11070 When using libc++, things are never found in TR1, even in C++03 mode

Conflicts:
	src/mongo/platform/hash_namespace.h
SERVER-3364,SERVER-5650 Move documenation of MONGO_COMPILER macros to compiler.h.

This deduplicates documentation, hopefully preventing the documentation from diverging.
SERVER-3364 Add macros for putting visibility and calling convention declarations on declarations.

Also SERVER-5650.

MONGO_COMPILER_API_EXPORT Puts the "export visibility" declaration on a type,
    function or variable.

MONGO_COMPILER_API_IMPORT Puts the "import from library" declaration on a type,
    function or variable.

MONGO_COMPILER_API_CALLING_CONVENTION Labels a function declaration with its
    calling convention.
SERVER-11978 Stop defining __builin_functions to bare functions

It no longer shows performance benefit on current compiler.
SERVER-11841 Move Win32 LoadStore and Interlocked specializations to namespace scope
SERVER-12064 Atomic operations for gcc non-Intel architectures

Add support for non-Intel architectures by using gcc builtins where
possible, but only on non-Intel builds. This permits builds to continue
to work on Intel architectures even with older gcc versions that do not
have the builtins.

atomic_intrinsics_gcc.h contains non-portable Intel assembly, so move it
to atomic_intrinsics_gcc_intel.h and add an
atomic_intrinsics_gcc_generic.h equivalent that uses only modern gcc
builtins.

Adjust atomic_intrinsics.h to use atomic_intrinsics_gcc_intel.h in the
Intel case, and atomic_instrinsics_gcc_generic.h in an additional
"otherwise" case.

This does not change behaviour or compatibility in the common IA-32 and
x86_64 cases. The previously existing code will continue to be used in
these cases. An older gcc without the modern gcc builtins will continue
to be able to build on these architectures because the previously
existing assembly will be used.

This does make this code fully portable to any architecture supported by
a modern gcc, since the new, generic code will be used in this case.
SERVER-12065 Support ARM and AArch64 builds

Detect platforms that define __arm__ and __aarch64__ as 32-bit and
64-bit platforms respectively.
MX-1217 added CMake changes for platform merge
SERVER-8676 Macroize 'hash' namespace detection in platform, use for s2

Conflicts:
	src/third_party/s2/hash.h