Coroutine push from fossil repository, commit 556d191bc8.

Large changes to how the coroutines are implemented. Moved most assembly
routines to C. Only coroutine_call remains.

Coroutine context structure is at the top of the allocated memory block
with the stack growing down beneath it. This is the only rational way
to implement this without mangling the context accidentally.

Beneath the allocated memory for the stack lies a guard page. This will
page fault if the stackframe goes below the lowest stack address. The
guard page works under Linux and Win32