Fix up memory barriers on Windows.

1. The _ReadWriteBarrier intrinsic and friends do not actually issue
   a CPU fence; they are purely for inhibiting the compiler in moving
   loads and stores across the call. So when compiling with MSVC, we
   also need to call MemoryBarrier from Windows.h to issue a fence.
   Note that _ReadWriteBarrier is *not* implied by MemoryBarrier; both
   are *really* needed.
2. On Cygwin, we only support GCC 3.x, so resort to inline assembly to
   issue memory barriers. I would have liked to avoid this, but since
   GCC 3.x doesn't provide __sync_synchronize and we aren't likely to
   upgrade to 4.x anytime soon, this is the workaround for now.
Mark inline assembly in mono-hwcap-s390x.c volatile.