[runtime]Implement InterlockedCompareExchange64 on 64bits target, x86 and arm.

The current state of ARM compilers don't allow us to use compiler intrinsics as
they ICE on us, so we suck it up and use a naked function.
[runtime]Use InterlockedCompareExchange64 instead of local hack.
Fix Thread.VolatileRead(long&) on 32bits.
[bcl]Switch BlockingCollection to use SequentialLayot to make sure its longs are 8 bytes aligned everywhere.