Tractography::Mapping: Un-templated mapping classes
Tractography::Mapping: Remove constructor parameters from TrackMapperBase
Tractography::Mapping: Removed step_size from track mapper constructor

This also required enhancing some algorithms to explicitly calculate step sizes and spline distances.
Tractography::Mapping: More modifications to TrackMapperTWI

Removed Gaussian smoothing parameter from TrackMapperTWI constructor; this is instead set using a public member function.
TrackMapperTWIImage no longer exists; this is instead implemented as a 'plugin' within TrackMapperTWI.
tckmap: Initial cleanup of code branching

Removing templating and moving construction parameters to public members allows initialisation of the mapper class independently of the TWI contrast.
tckmap: Cleaner selection of output image datatype
Tractography::Mapping: Remove direct_dump field from MapWriterBase constructor

This is now toggled using a public  member function instead.
Tractography::Mapping: Move BufferScratchDump class to its own header file
Tractography::Mapping: More back-end changes

- The Gaussian track-wise statistic in TWI has been temporarily disabled; it requires a TWI factor to be stored for every streamline rather than a single value for the whole streamline, so is a nightmare to support. It will be re-implemented down the track using its own set of classes, and will require an explicit code branch in tckmap.
- The precise streamline mapping method has been implemented as an alternative voxelise function in TrackMapperBase; this means:
  - The precise_tdi contrast no longer exists.
  - Addition of a 'length' field into the Mapping::Voxel class.
  - An extra command-line option in tckmap.
  - Removal of the SetVoxelDir class.
- The SIFT::Track_fixel_contribution function get_value() has been changed to get_length(), both for clarity and to match the corresponding function in Mapping::Voxel and derived classes.
- Mapping::SetVoxel and other corresponding classes have explicit insert() functions to control how the underlying voxel contributions are combined into the set.
- Function TrackMapperBase::add_to_set() allows the precise streamline mapping algorithm to be written once, and used with any underlying voxel set.
- Added more oeprator functions to Mapping::Voxel classes to encourage sane behaviour in all use cases.
Tractography::Mapping: Untemplate MapWriter class

- The MapWriterBase class is no longer templated based on the type of voxel set.
- MapWriter has been renamed to MapWriterGreyscale, and MapWriterColour is now MapWriterDEC.
- Removed convenience functions Mapping::get_factor(); this functionality will be re-implemented later in the classes dedicated to doing TWI with Gaussian smoothing.
- Changed MapWriterDEC to do an explicit averaging with the mean voxel-wise statistic, rather than just normalising the vector.
- Streamline count buffer is now initialised within the derivative classes of MapWriterBase (not all derivative classes will use it).
tckmap: Reduce code branching

Thanks to all the back-end work, only a single branch point is required at the end of tckmap, depending on the type of voxel-mapped information passed from the mapper(s) to the writer class.
This then opens the possibility of having output dimensionalities other than greyscale and directionally-encoded colour... (wink wink)
Tractography::Mappping: Removed class TrackMapperDixel

Instead, a DWI::Direction::Set is passed to TrackMapperBase as a 'dixel plugin'; this allows TrackMapperTWI to be used for dixel data also.
tckmap: Add capability to map to dixel output image
Tractography::Mapping: Redesign MapWriter class

Due to excessive code duplication, have cancelled the idea of having a MapWriter type for each output image dimensionality, and instead everything is handled using a single MapWriter class.
An enum tells MapWriterBase the type of writer instantiated, and the SetVoxel class type fed to the functor controls how the image buffer(s) is(are) updated.
tckmap: First compilable version with TOD output

Have not yet tested the code; this is simply the first iteration that compiled.
Tractography::Mapping: Simplify TrackMapperBase functions

This class now has three voxelise functions: one for straight TDI, one for any case where the streamline tangent is required, and one for the precise mapping method.
The latter two both make use of the add_to_set() functions to calculate the relevant information based on the streamline tangent and contribute the result to the set of elements traversed by the streamline.
Tractography::Mapping: Alterations to SetVoxel classes

Fixed some bugs in the SetVoxel classes, made the function design a little safer.
In the mapping code itself, used Point<int> throughout mapping, which is only converted to a Voxel class when preparing to write to a set; this makes it clearer what represents what where, especially since the Voxel class now contains a length.
Precise mapping appears to be working now.
Also changed the -colour option in tckmap to -dec.
tckmap: Fix erroneous error message RE: datatype
tckmap: Fix selection of default output image datatype
tckmap: Add new references