Add minimal example for x86_64 user level threads.

We implement a minimal concepts of user level threads. This shows the minimum requirements for our 'staggered' stack implementation: we need to be able to switch to a new stack and allow someone else to continue the calling function right before the switch.
4 jobs from coninuation in 37 seconds (queued for 1 second)
Status Job ID Name Coverage
  Build
passed #3436
build_cmake

00:21

 
  Test
failed #3437
run_tests

00:15

 
  Sanitizer
skipped #3439
run_address_sanitizer
skipped #3438
run_thread_sanitizer
 
Test run_tests
compilation terminated.
app/invoke_parallel/CMakeFiles/invoke_parallel.dir/build.make:62: recipe for target 'app/invoke_parallel/CMakeFiles/invoke_parallel.dir/main.cpp.o' failed
make[2]: *** [app/invoke_parallel/CMakeFiles/invoke_parallel.dir/main.cpp.o] Error 1
make[1]: *** [app/invoke_parallel/CMakeFiles/invoke_parallel.dir/all] Error 2
CMakeFiles/Makefile2:392: recipe for target 'app/invoke_parallel/CMakeFiles/invoke_parallel.dir/all' failed
Makefile:140: recipe for target 'all' failed
make: *** [all] Error 2
./ci_scripts/run_tests.sh: line 9: ./bin/tests: No such file or directory
ERROR: Job failed: exit code 1