ENH: Remember if updates are automatic

Store if the user has enabled automatic extension updates in QSettings.

Issue #2089

git-svn-id: http://svn.slicer.org/Slicer4/trunk@23497 3bd1e089-480b-0410-8dfb-8563597acbee
ENH: Adding API to check for extension updates

Add some initial API to manage scheduling extensions for update, similar
to how we schedule extensions for uninstall (as the implementation will
necessarily be similar). For now, the settings management should be
working; the rest (including a checkForUpdates() method) is mostly
placeholder that is needed to start implementing UI and underlying
logic.

Issue #2089

git-svn-id: http://svn.slicer.org/Slicer4/trunk@23498 3bd1e089-480b-0410-8dfb-8563597acbee
ENH: Start adding logic to check for updates

Add logic to issue server API calls to check for updates to extensions,
and to manage the same. This is still missing anything to actually
download or apply said updates.

Issue #2089

git-svn-id: http://svn.slicer.org/Slicer4/trunk@23499 3bd1e089-480b-0410-8dfb-8563597acbee
ENH: Download updates

Refactor update download logic, introducing a new 'task' class to
manager downloads, rather than trying everything through the network
manager's signals. Also, move the code to start such a task to a helper
function. Leverage these to hook up downloading of updates, now that
tasks can have different completion handlers assigned. Write update
archive file and scheduling information on update download completion.

Issue #2089

git-svn-id: http://svn.slicer.org/Slicer4/trunk@23500 3bd1e089-480b-0410-8dfb-8563597acbee
ENH: Improve extension manager info icons

Tweak the information icons used in the extension manager to have whiter
glyphs, and a less muddy glyph for the 'i' (update available) icon.

git-svn-id: http://svn.slicer.org/Slicer4/trunk@23501 3bd1e089-480b-0410-8dfb-8563597acbee