Implement GUI Timeshare and fix introduced bugs

The sweep body now timeshares with the GUI by using
callbacks with a generator for frequency control.
It is now possible to interact with the GUI during
a sweep, not all side-effects may yet be dealt with.

Many of the bugs (knowingly) written into the previous
version of the code should now have been resolved.

Signed-off-by: Gray Remlin <gryrmln@gmail.com>