ENH: Added icon loading for scripted module base class

Python scripted modules that use the ScriptedLoadableModule base class
now load their icon from Resources/Icons/<ModuleName>.png.
If the icon file does not exist then the default icon is kept.
Modules can override the icon setting in the module __init__ function to
use any other custom icon.

Updated extension wizard template and extension test.

Updated one more module (VectorToScalarVolume) to use
ScriptedLoadableModule base class.

From: Andras Lasso <lasso@queensu.ca>

git-svn-id: http://svn.slicer.org/Slicer4/trunk@23676 3bd1e089-480b-0410-8dfb-8563597acbee
BUG: Ensure volume node without default storage node can be saved.

This commit allows volume to be saved from python using
"slicer.util.saveNode()".

More specifically, this commit (1) factors out the code allowing to
create and add the default storage node to the scene  and (2) ensures a
call to "qSlicerCoreIOManager::saveNodes" work when there are no storage
node associated with a volume node.

This is needed because within the "saveNodes" function, calling the
function "qSlicerNodeWriter::extensions(node)" expects a storage node
to be present.

Thanks to Julien Finet for reviewing.

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