STYLE: Remove unused Set/Get*Opacity method from slice logic

Following the introduction of the composite node (r175) that is able to
store the opacity information, these methods originally introduced
by r129 are now redundant and unused.
ENH: Re-factor and rename some of MRMLReference tests

This commit add convenience function allowing to systematically test
the different cases.

It also renames test functions to better represent the purpose of the
test:
  TestAddReferenceNodeID ->  TestSetAndObserveNodeReferenceID
  TestReferenceNodeNoObservers -> TestSetNodeReferenceID
ENH: Simplify MRMLReferences using smart pointers

* Use of smart pointer in vtkMRMLReference allows us to remove
the complicated code manually managing the calls to Register/UnRegister

* function "SetNthNodeReferenceID" and "SetAndObserveNthNodeReferenceID"
have been updated to have similar code (at the exception of the
code setting the observation events). The second will consist in factoring
code common code to avoid code duplication.

* SetNthNodeReferenceID/SetAndObserveNthNodeReferenceID have also
been fixed to work properly in case the reference doesn't exist
and referencedNodeID is null.
BUG: Fix behavior of "Set(AndObserve)NthNodeReference" function

This commit now ensures that if a reference is set to position N,
it can later be obtain given N.

The issue is illustrated below:

 SetNthNodeReferenceID("MyRole", /* n= */ 1, "ID2")
 GetNthNodeReferenceID("MyRole", /* n= */ 1)  => return NULL
 GetNthNodeReferenceID("MyRole", /* n= */ 0)  => return "ID2"

 => Getting reference N=1 should return ID2

For reference, the proposed change has also been discussed on the mailing
list. See [1]

[1] http://slicer-devel.65872.n3.nabble.com/MRML-References-update-proposal-tt4031425.html
STYLE: Better readability of MRML node reference function

This basically improve the readabitliy of the code by changing:

  (*referencedNodesIt) -> reference
  references[n] -> reference
ENH: Use vector of sliceLayerLogic in Slicelogic
ENH: Generalize CompositeNode to support list of layers using MRML references
STYLE: Remove unused Initialize methods from vtkMRMLSliceLogic API

The methods "Initialize" and "IsInitialized" have been first introduced
in r14218 as a general way to initialize logic object and then
their usage has been depreacted and removed by commit r15928 and r15929.

It turns out that in this case, a two step initialization was not needed
and the same goal could be achieved using methods with explicit name.
In that specific case, methods "setMRMLSliceNodeInternal"
and "setMRMLSliceCompositeNodeInternal".
STYLE: Use smart pointer to instantiate object
ENH: Generalize opacity management to multiple layers
STYLE: Remove unused vtkMRMLSliceLogic::Initialized member
STYLE: Removed unused  vtkMRMLSliceLogic::ActiveSliceTransform member
STYLE: Remove unused slice logic (LookupTable|PolyData)Collection members
STYLE: Move Set/GetCompositing function definition to cpp file.
COMP: Fix comparison warning in vtkMRMLSliceCompositeNode
ENH: Default Opacity set to 1.0 instead of 0.0
ENH: Refactor slice logic layer pipeline to support multiple layers
STYLE: Update SliceControllerWidget to use more generic layer API
STYLE: Remove unused slice composite node members: (Fg|Bg|Label)Grid
BUG: DO NOT INTEGRATE - Fix memory leaks and uninitialized variables

Issues found using Valgrind.

Conflicts:
	Libs/MRML/Core/vtkMRMLNode.h

ENH: To be merged with mem leaks

Conflicts:
	Libs/vtkITK/vtkITKArchetypeImageSeriesScalarReader.cxx
	Libs/vtkITK/vtkITKTimeSeriesDatabase.cxx