BUG: fix the crash on scene close, see issue #3313

Parameter node was referenced from a node selector event handler in the process
of scene close. Since parameter node was deleted before the the node selectors
were updated, this led to invalid reference.

The fix eliminates references to parameter node from node selector event handlers,
and does this only when user initiates the processing.



git-svn-id: http://svn.slicer.org/Slicer4/trunk@22309 3bd1e089-480b-0410-8dfb-8563597acbee
ENH: Re-factor selection node

Use the class name so modules can register a node to place
via mouse more generally.

Use the new functionality in the mouse mode tool bar,
annotations, testing.
ENH: Add support for the LPS coordinate system for CLIs

Add a coordinate system flag check, default to ras but support LPS.

Update the displayable nodes that use the WriteCLI method to
use the coordinate system flag.

TODO: IJK coordinate system - See issue #2979
BUG: Set strings to null after delete

Set strings to null after they've been deleted, trying to
avoid seg faults when debugging
ENH: Move the color conversion utility methods

Move the C++ color / Qt color conversion methods out of
Annotations and into qMRMLUtils.
BUG: Fix pan bug in annotation displayable manager

Comparison for valid viewpoint coordinates wasn't properly
checking the first coordinate.
ENH: Add the ability to access displayable managers.

Added get nth displayable manager to the displayable manager group, and
get displayable managers to the ThreeD view and widget
Useful for debugging displayable managers.
ENH: Expose module displayable managers to Python

Before this change, you could get at module displayable managers but not
call any of their specific methods in python. This change follows the
pattern of the module logic init file.

To get at the module displayable managers for the first 3D window:
lm = slicer.app.layoutManager()
td = lm.threeDWidget(0)
dms = td.getDisplayableManagers()

The markups fiducial displayable manager was at index 7 in my test:
mfdm = dms.GetItemAsObject(7)
h = mfdm.GetHelper()
from there you can debug the seed widgets

Annotation, Volume Rendering and Tractography displayable managers
are now also accessible from python.
ENH: Add Markups module providing easy fiducials management.

Based on the Annotations module from Slicer 4.2 and the Fiducials
module from Slicer 3.6, add a new Markups module to provide
some missing functionality into Slicer4:
- one file per fiducial list
- added a unique id and orientation for each fiducial
- save/restore default display settings
- create list with current list display settings
- press p to add a fiducial
- possible to "jump" to a slice using either mouse click or right click menu
- move fids between lists
- split displayable managers into 2d and 3d versions
- pattern for names of new fiducials
- projection on 2d viewers
- add a right click menu option to delete highlighted markups
- support markups selection by mouse and keyboard arrow key
- %N can be used in the markups name format string
- possible to toggle visible/locked/selected state for a list of markups
- uniform scale for both markup text and glyph

Also added a compare view self test.

See issue #2606
ENH: Add annotation and markup file loading

Add utility methods to allow loading Markup fiducials
from the python console, as well as a backward
compatible Annotation reader

See issue #2606
ENH: Support passing Markup fiducials to CLIs

Use the coordinate system flag to support RAS or LPS coordinates
for the points.

See issue #2606
ENH: Deprecating annotation fiducials

Edit properties in the Data module will go to the Markups module for
both Markups and Annotations fiducials, so that annotation fids
can be converted.

Unregister the Annotations fiducials IO, Markups can read .acsv files.
Add a label in the Annotations GUI that fiducials can be found in the Markups module.

See issue #2606
ENH: Replace Annotations with Markups in default favorite modules list.

See issue #2606
ENH: Update TractographyInteractiveSeeding module to support Markups

Allow usage of Markups fiducials or Annotations fiducials.

See issue #2606
BUG: Update Endoscopy module to support Markups

Added a backward compatibility call of GetNumberOfFiducials to the
Markups fiducial node.

See issue #2606