Refactor scheduler code.

flx_world now has two schedulers:

run_until_blocked()
run_until_complete()

The first one runs until it would block or terminate, then returns
a count of the number of pending requests on the asycn queue,
or -ve number for error.

The second one runs, blocking on the async queue, until there
are no pending requests or an error and returns 0 or a -ve
number for error.

Use the first one in embedded foreign event loops.
The second one is used by the standard driver.
Fix python build to use world stuff.