Initial Tortuosity module commit

So far the module is empty.
Add distance and inflection count metric

Add the two simple metric to the tortuosity module. Basically, the widget
calls the logic on the spatial object node depending on the selected
checkboxes.
Also add the Inflection points metric that show the inflection value at
each point of the vessel.
Add sum of angle metric to the tortuosity logic

Add the missing sum of angles metric to the tortuosity logic.
Take advantage of this to factorize some of the copy methods in a namespace
for clarity.
Add testing

Test for both a straigh line and a sinusoid.

This allowed to weed out some errors, particurarly:
 - Actually return whether the logic was successful or not

 - Make sure that SOAM computation is valid before computing the soam
result

 - Only compute the torsion angle if the vector it uses aren't null.
Otherwise normalizing them can possibly bring them back to life and create
aberrant results.

 - Improve Frenet frame computation when the acceleration is null. When
the acceleration is null, we previously did not check for inflection point
as we did not compute the Frenet's N vector. This could lead to inaccuracy
when the vessel is line-like around the inflection point as that inflection
would simply be skipped (acceleration is null following a perfectly sampled
line).
To remediate to this, we can compute the whole Frenet frame each iteration.
When the acceleration is null, we can rely on the other vector of the frame
to compute the N vector. This assumes that very little to no torsion around
the N vector happened, which we can reasonnably assert in an actual blood
vessel.

Change-Id: I84cf23e6487978444933e518ed9a70530bf33c27
Improve tortuosity module GUI
Enable run tortuosity button only when a valid node is present
Enable deletion of spatial object nodes
Add option to save the tortuosity arrays as an CSV file

This implies a little bit of refactoring/enhancing:
 - Add All flag (0xFF) so we can run all the metrics
 - Refactor the GetArray(s) methods to clarify when the array is created
or not. To this end, a GetOrCreateArray method was added. Internaly, we
use templated method so we can any type of array.
  - Automatically add the NumberOfPoints integer array on each computation
of tortuosity. For each vessels, this array values tells the user how many
point this vessel has. It can be used (like in SaveAsCSV) to only get one
measure value per vessel instead of on measure value of each point of the
vessel.

By default, the csv does not list the InflectionPoints array since it only
makes sense to look at it when we look at all the points of the vessels.
Move logic's tortuosity computation to a TubeTK filter - 2/2

Use the new filter in the logic.
Fix Tortuosity module compilation

Include filtering directories. No need to link against any library since
the filter used is templated.

Change-Id: Ie8b98ef7802a5e017aec4d58abb0b5a2ebc34f01
Fix Max and Unix compilation

Change-Id: I64fb035659a7b4d45004c84dcf409e91fad32fa4
Update TubeTK to work with VTK6

Change-Id: I3c22c1250a28c50f6184c2e0e634c1b9bb50ecb3
Fix crash on tortuosity module

The crash happened on data with multiple vessels. The index used in
the filter->GetInflectionPointValue simply wasn't correct.

Also remove the debug array "NumberOfPoints" that had managed to slip
through.
Fix tortuosity CSV export

During the last refactor, the array overzealously removed. It is needed by
the export csv code.
The array was re-installed and documentation updated to prevent this
problem from happening again. Also made the code more robust and more
explicit by checking for possibles failures more often.
Add 'Modules/Loadable/TortuosityModule/' from commit '8be295684477bb8676ae8dae74df00e20a36f5bc'

git-subtree-dir: Modules/Loadable/TortuosityModule
git-subtree-mainline: c05e47efefed24a081e3227f7b26f266241b6709
git-subtree-split: 8be295684477bb8676ae8dae74df00e20a36f5bc
Import tortuosity module to VesselView
Refactor python testing in vesselview

Refactor to make use of slicer's cmake macros. This also allows to leverage
some of slicer's tests.
Move the tortuosity testing in the application folder

This is the occasion to refactor the cxx testing CMakeLists in
Applications. It is now testing the modules as well as the normal
application tests. It was refactored to use the slicer macro which makes
the code more readable and more slicer-like.

NOTE that the test fails for now ! Either the tortuosity module or the test
is wrong.
Use simple_test macro from slicer in CPP testing
Add fail unittest to make sure tests do fail correctly