Background updates use a custom UI handler

Simpler than going via the Python.
Don't warn about the default bin dir not being in PATH when destroying an app
Migrated more unit tests
Removed unused code