Custom context switcher for x86_64 and aarch64
This provides a custom assembly language context switcher for coroutines.
It is faster than the Linux user contexts and safer than setjmp/longjmp. It is supported only on x86_64 and aarch64 architectures. User contexts and setjmp/longjmp are still supported and can be selected if necessary by modifying the macros in coroutine.h