include: Add memory clobber to GCC asm statement in NtCurrentTeb().
Today, NtCurrentTeb() has a single asm statement when compiling for the i386, x86-64, or ARM architecture with GCC. This single asm statement has neither the "volatile" qualifier nor the "memory" clobber.
This can provoke undefined behavior if the current TEB changes between NtCurrentTeb() calls. This is because GCC assumes that the asm statement does not depend on memory or the thread-local register. In fact, given the same address of the "teb" variable, GCC assumes that the asm statement produces exactly the same value on every invocaton.
This primarily causes issues when switching to another fiber from a thread that is different from the thread on which the fiber was last executed. Theoretically, however, this may also cause issues when the optimizer aliases the "teb" variable to another variable that is shared between threads, and perform global optimization that can work across multiple threads in runtime (if any).
Fix this by adding the "memory" clobber to the asm statements that computes the current TEB address.