ENH: Provide a mechanism to build several applications

Configure the applications and packaging with
two variables to configure the build:
- Slicer_MAIN_PROJECT # main project
- ${Slicer_MAIN_PROJECT}_APPLICATION_NAME # application name

Make the packaging given the main application name.

git-svn-id: http://svn.slicer.org/Slicer4/trunk@20155 3bd1e089-480b-0410-8dfb-8563597acbee
BUG: Un-install extensions after Slicer restarts.

Extensions are now scheduled to be un-installed. When doing so the extension name
will be added to list in the settings identified by "Extensions/ScheduledForUninstall"
and the extensions will be effectively uninstalled when Slicer restarts.

User has also the possibility to cancel the extension scheduled for uninstall.

Note that the uninstall mechanism does NOT yet account for extension dependencies.

See http://www.na-mic.org/Bug/view.php?id=1906

Closes #1906

git-svn-id: http://svn.slicer.org/Slicer4/trunk@20156 3bd1e089-480b-0410-8dfb-8563597acbee
BUG: Disabling extension now works as expected.

See http://www.na-mic.org/Bug/view.php?id=2107

Closes 2107

git-svn-id: http://svn.slicer.org/Slicer4/trunk@20157 3bd1e089-480b-0410-8dfb-8563597acbee
BUG: Incompatible extensions are disabled when Slicer starts

An extension is considered incompatible when the version of Slicer used
to build the extension is different from the version of Slicer attempting
to load the extension.

ExtensionsManagerModel API now includes the following functions:
  isExtensionCompatible
  identifyIncompatibleExtensions
and also the signal:
  extensionIdentifedAsIncompatible

The extensions manager widget will show which extension are incompatible
by displaying a message of the form:
 "Incompatible with Slicer rXXXX (build for rYYYYY)"

See http://www.na-mic.org/Bug/view.php?id=2088

Closes #2088

git-svn-id: http://svn.slicer.org/Slicer4/trunk@20158 3bd1e089-480b-0410-8dfb-8563597acbee
ENH: Added the feature to color tracts by mean orienation and by the orientation of each segment (which does not need tensor information now)

git-svn-id: http://svn.slicer.org/Slicer4/trunk@20159 3bd1e089-480b-0410-8dfb-8563597acbee
ENH: give edit effects an optional threeDWidget

Tools can now optionally accept events and draw to threeDViews
in order to support 3D operations such as volume carving.
STYLE: fix typo in variable name SLice -> Slice
ENH: use custom scheduleRender method in editor

Support override of background drawing for 3D view so
we can try drawing on top of slow-rendering
volume rendered views
ENH: VolumeMasker module (work in progress)

Track changes to a background volume and label map
to create a masked volume that has zero everywhere except
where the label volume has a non-zero value.

This is useful for volume rendering during editing.
ENH: give edit effects an optional threeDWidget

Tools can now optionally accept events and draw to threeDViews
in order to support 3D operations such as volume carving.
ENH: add default render method for Effects
STYLE: remove dead code
ENH: set up framework for 3D drawing

Needs work to correct the coordinate systems and optimize
the rasterization steps but otherwise has a workable skeleton.
STYLE: add TODO note

Reminder to think about making access to vtk objects
more pythonic and to include numpy helpers (have a
look at how mayavi works)
ENH: fix camera geometry and code cleanup

Add debugging mode that uses annotation infrastructure
to display draw regions.
ENH: accept double coordinates for corners of paint region

Better support for threeD painting
ENH: cleanup of threeD drawing mode

Still needs to handle aspect ratio of the paint buffer but otherwise
coordinate systems are correct.
ENH: fix aspect ratio of threeD drawing

Also fix size of fill buffer to avoid rounding errors
that led to out-of-buffer accesses.
BUG: don't save undo/redo at each slice of 3D segment

This was taking a large chuck of time and was incorrect behavior.