New option -fslgrad to supply DW encoding in FSL bvecs/bvals format

As discussed in issue #51.
OpenGL: don't re-define __glext_h_ if already defined

On recent versions of Qt4, it seems the Qt headers include glext.h,
which would define this macro and cause a warning in gl_core_3.3.h.
tckgen: Fix help information to reflect algorithm name changes
Updates following creation of -fslgrad option

- Throw an exception if both -grad and -fslgrad are provided
- Updated exception and doxygen texts to reflect new behaviour
- Allow get_DW_scheme() to return an empty matrix if no encoding is found, but detect such an empty matrix in check_DW_scheme()
dwiextract: Ensure valid diffusion encoding is found
mrconvert: Compatibility with -fslgrad option
Changes to tractography file timestamp handling

Changed the timestamp to be stored as an explicit std::map<string, string> member in the Tractography::Properties class, rather than a double.
New timestamps are now generated in the __WriterBase__::create() function, and any pre-existing timestamp in the Properties class is ignored at file creation.
Closes #57.
Non-template functions defined in a header should always be declared inline
Simplification of tck.tsf checking & validation
Further simplification of validation of tsf/tck files
Move timestamp handling back to DWI::Tractography::Properties class
Allow DW gradient encodings that have fewer than 7 rows

As discussed in #61.
Merge pull request #61 from jdtournier/fsl_bvec_handling

New option -fslgrad to supply DW encoding in FSL bvecs/bvals format
Clean up lib/image/stride.h header

In particular, remove ancient references to 'Set' as the template argument,
replace with 'InfoType'.
Changes necessary to preserve image strides

These changes allow image strides to be preserved as closely as possible
through the processing chain, particularly for NIfTI. The idea is to
preserve the order (and direction) of those axes not explicitly
requested as contiguous by the application, so that the strides of the
output image match that of the input even if the application uses a
BufferPreload with a specific stride request, or the output
Image::Header/Buffer is created with a specific stride request.

For these changes to work as expected, applications will need to be
modified to use exclusively the Image::Stride::contiguous_along_axis(),
Image::Stride::contiguous_along_spatial_axes(), and
Image::Stride::set_from_command_line() convenience functions. Explicitly setting
all strides will otherwise remove all trace of the original strides, leaving no
chance for the backend to try to recreate the output strides.
Updated all commands to use Image::Stride convenience functions

As required to preserve image strides as closely as possible, see commit
a74843657 and issue #45.
configure: fix handling of missing compiler

Closes #58.
Thread::Queue: discard item if Pipe functor returns false

The Pipe functor in a 3-stage threaded queue can now return false to
signal that the corresponding item is to be discarded, rather than sent
through to the next stage. The previous behaviour only caused the
corresponding thread to stop processing, which is no use in most cases
where the Pipe functor is running over multiple threads, and the
termination of one thread would have no impact on the other threads or
the running of the queue - the only outcome would be fewer threads left
to do the remainder of the processing. At least with this change the
return value can be used for a potentially useful purpose - although
currently no application is making use of that feature.

Closes #20.
Merge branch 'nifti_strides'
Merge pull request #62 from jdtournier/tck_timestamp

Merge: tractography file timestamp handling