ENH: Create editable directory list

Create utility widget class DirectoryListWidget, which provides a
standard interface of supplemental buttons to support a user editable
qSlicerDirectoryListView. (Surprisingly, no such class previously
exists; existing occurrences of this pattern reimplement the
supplemental UI in the parent, for each occurrence!)

This will allow us to trivially create multiple instances of editable
lists.
ENH: Allow access to settings dialog from Python

Make qSlicerApplication::settingsDialog Q_INVOKABLE, in order to allow
access to the settings dialog from Python (e.g. scripted modules).
ENH: Add UI for modifying template paths

Create a settings panel for the Extension Wizard module that allows
editing the list of paths used to find templates. Change how we read
settings to work with the way ctkSettingsPanel stores lists.

This also updates the CTK version used to bring in changes needed for
the above (making ctkSettings{Dialog,Panel} more usable from PythonQt).

Issue #3603