Implement cooperative scheduling
Implement cooperative scheduling

Via the utility `cooperative_thread_hopper` we yield back to the
Sublime threads so other plugins, core functions can do their work.

We start annotating the views on the main thread to get a complete
and correct first draw, after that we "hop" on the worker to render
and annotate all hunks currently not in the viewport.

TODO: Ideally we would not iterate per hunk here but (finer) per
modification group because hunks can be quite large.  Consider the
worst case where everything is one large hunk, then we would still
block the main thread for too long.

divmain/GitSavvy,divmain/GitSavvy,divmain/GitSavvy