Disable [tail call] optimization with #pragma

Use vendor-specific compiler directives to disable tail-call
optimization instead of the hidden extra argument hack. This is both
more reliable and less ugly.

Supported compilers: MSVC, GCC (clang is not supported)