Add endian swapping struct, use an intermediate for Windows.h

This should further reduce the distance and allow us to see things as a small change.

I tested compiling by pretending I had a big endian system (based on defines), and so I know it at least compiles now.

Also, moved everything to including `"CommonWindows.h"` instead of `<Windows.h>`.  This allows it to undef some things and enforce lean and mean, so things are more consistent.  It also gives a good place to include Xbox.h instead.

-[Unknown]