Simplify switching code.

This patch does away with the role of _global_state to identify the current
thread. Instead, the current thread is always identified by "__fibers_current"
in the thread state dictionary. The _global_state is now only used to pass
the source fiber and the value around a switch() call.

This fixes a bug whereby the current fiber was not correctly identified by
_global_state.current in case the thread of the previous fiber exited before
the current fiber would switch() to a third fiber.