DICOM: do not modify DW information

Remove scaling of b-value by square of norm of DW gradients from DICOM
handling code, and move it to a dedicated
DWI::scale_bvalue_by_G_squared() function, as discussed in issue #48.
This means applications are guaranteed to be provided with an accurate
representation of the DW information in the DICOM headers. The
DWI::get_valid_DW_scheme() function now handles the scaling of the
b-values, but only if the "-scale_bvalue_by_grad" option is also
supplied.

The DWI::get_DW_scheme() function now also returns the unmodified DW
gradient scheme - previously the gradients were normalised before being
returned.
Merge branch 'master' into dicom_DW_handling

Conflicts:
	src/dwi/gradient.cpp
	src/dwi/gradient.h
DW scheme handling: add -bvalue_scaling option

As discussed in issue #60, multi-shell schemes will typically specify a
single nominal b-value and modulate according to the amplitude of the DW
gradients. This commit adds an option (and corresponding config file
entry) to specify whether the b-values should be scaled. The default is
to let MRtrix auto-detect whether scaling is needed based on the
presence of more than 2 b-values, which would indicate a multi-shell
scheme.
b-value scaling: auto-detect need for scaling based on is_single_shell()

Use the DWI::Shells::is_single_shell() function to determine whether
b-value scaling is needed (used for 'auto' option of -bvalue_scaling).
-bvalue_scaling: change valid choices to no, auto, yes.

Also a few changes to corresponding inline documentation.
DICOM: issue debug message for unknown tag whether private or public
DICOM: get VR from dict if unknown

Even using explicit transfer syntax, some vendors can't be bothered to
properly fill in the VR (value representation) field, leaving it as UN -
unknown. This prevents reading tags that would otherwise be
straightforward to read. This commit adds a further attempt at figuring
out the VR for items that remain unknown, by looking it up in the DICOM
dictionary - a step that should only be needed for implicit transfer
syntax.
DICOM: don't rely SeriesTime being constant over a DICOM series

This is unfortunately not generally true. Particular example is a GE
dataset that won't have a constant SeriesTime after on-scanner bias
field correction, when the original data set does.

Unfortunately there is no guarantee this won't cause issues with other
data sets. We'll have to wait and see if anyone reports any problems...
DICOM: issue warning if series times do not match
allow parsing of -nan in to<>() converter function
new to<bool>() specialisation to allow true/false, yes/no, or integer parsing
File::Config now relies on to<bool>() specialisation
new type_bool() command-line argument type
b-value scaling now defaults to 'on'

There is one command-line option to change this (-bvalue_scaling), along
with a corresponding config file entry (BValueScaling) to change the
default.
Merge pull request #60 from jdtournier/dicom_DW_handling

DICOM: do not modify DW information