ENH: Initial refactoring of extension manager UI

Refactor right corner area of extension manager into a .ui file, similar
to how the left corner area (navigation buttons) is already handled.
This allows us to have separate search widgets per tab (allowing for
independent search states, if/when support for searching installed
extensions is added), and also to add a 'configure' button (which we do)
that provides independent menus per tab.

The menus are created, but not yet functional. Icons (from the Public
Domain Tango theme) are also added. (The 'check for updates' icon uses
the theme pixmaps. Tango does not provide a 'configure' icon as such, so
the modified svg from which the pixmaps were generated is also being
committed.)

Issue #2089
Issue #2145

git-svn-id: http://svn.slicer.org/Slicer4/trunk@23398 3bd1e089-480b-0410-8dfb-8563597acbee
ENH: Add function to list archives

Add a function to vtkArchive.cxx to obtain the list of files in an
archive without extracting the archive. Also, fix parameter name in
(misnamed) extract_tar to make at least some kind of sense.
("archiveFileName", as in list_archive(), would be better, since
extract_tar likewise works on non-tar archives, but for now leaving it
consistent with the function name.)

git-svn-id: http://svn.slicer.org/Slicer4/trunk@23399 3bd1e089-480b-0410-8dfb-8563597acbee
BUG: Correctly encode archive file name

Use qPrintable() (which uses QString::toLocal8Bit() under the hood) to
encode the QString archive file name to char const* for passing to
extract_tar, rather than QString::toLatin1(), which is unlikely to
produce the correct bytes (the underlying system calls are more likely
to want system locale encoding) in case of a non-ASCII file name.

This sort of thing appears to be endemic to Slicer, but I don't care to
propagate that to the forthcoming call to list_archive(); thus, making
it consistent in this file at least.

git-svn-id: http://svn.slicer.org/Slicer4/trunk@23400 3bd1e089-480b-0410-8dfb-8563597acbee
ENH: Add ability to install extension from file

Hook up 'install from file' action in extension manager. Create an
overload of qSlicerExtensionsManagerModel::installExtension taking only
an archive file name, which uses the new list_archive method to
determine the extension name and then hands off to the existing method.
Modify the existing overload to cope with the lack of server metadata
that occurs in this case, and to fill in a sufficient subset from common
information (i.e. the os/arch/revision of currently running Slicer) and
the description file provided in the extension archive.

This should allow users to install extensions from externally obtained
archives of the same (e.g. manually downloading from the server with an
external web browser).

Issue #2145

git-svn-id: http://svn.slicer.org/Slicer4/trunk@23401 3bd1e089-480b-0410-8dfb-8563597acbee
ENH: Add logging message for installed extension

Add helper to qSlicerExtensionsManagerModel to spit out info-level
logging messages from the same. Add such message on successful install
of an extension.

git-svn-id: http://svn.slicer.org/Slicer4/trunk@23402 3bd1e089-480b-0410-8dfb-8563597acbee
ENH: Show messages while installing extension file

Tweak extension 'install from file' logic to catch and display (via
QMessageBox) any messages reported relevant to the install process. This
includes errors and the success message added in the previous commit.

git-svn-id: http://svn.slicer.org/Slicer4/trunk@23403 3bd1e089-480b-0410-8dfb-8563597acbee
COMP: Silence unused parameter warning

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