Add value proxies

Value proxies are functions that can be set on widgets representing
numbers such as ctkDoubleSpinBox, ctkDoubleSlider... The proxies decouple
the values displayed from the input value.

For example, one might want to manipulate celsius in the code but to
display fahrenheits. In that case, a "celsius to fahrenheit" linear value
proxy can be added to the widget. The displayed values will be in
fahrenheit while the value given by the widget signals and accessors will
be give celsius.

Note, the minimum, maximum, single step and decimals apply on the spinbox
displayed value. If the spinbox limit is 200 and the proxy value a function
like f(x) = x - 30, then one can call setValue(212) on the widget. The
value displayed will be 182 and the signal valueChanged will give 212.
A setValue(256) however will be have a display value of 200 and the signals
valueChanged give 230.

The base class for value proxies is ctkValueProxy. Subclasses should
reimplement the methods valueFromProxyValue() and proxyValueFromValue().
Propagate value proxy to other widgets

Adding the value proxy to:
 - ctkDoubleSlider
 - ctkSliderWidget
 - ctkCoordinatesWidget
 - ctkRangeWidget
 - ctkDoubleRangeSlider

For the ctkSliderWidget, since it's using the ctkDoubleSlider and the
ctkDoubleSpinBox, we can simply pass the value proxy to these. The same
thing applies to ctkCoordinatesWidget.
For the others, it's like the ctkDoubleSpinBox. The proxy is set between
the values accessors.

The tests added are very similar to the ctkDoubleSpinBox test, just tweaked
to these classes specific API.
Update displayed value when value proxy is modified
Apply ValueProxy to widgets min and max
Propagate internal use of ctkQDoubleSpinBox to qttesting tests
Fix decimals in ctkCoordinatesWidget with DecimalsByKey

Issue http://www.na-mic.org/Bug/view.php?id=2973
ctkDoubleSpinBox now keeps original precision until edited

QDoubleSpinBox rounds the input value with a given decimals number.
This can loose important precision. Here we apply the same mechanism as
for ctkDoubleSlider: store the original value with full precision.

http://www.na-mic.org/Bug/view.php?id=3261
Add ctkDoubleSpinBox::SizeHintPolicy

Sometimes we don't want to bound a spinbox with a min and max.
If the minimum and maximum of the spinbox where very large, it would
enforce a wide spinbox.
With SizeHintByValue, the spinbox takes only the space it needs.

ctkCoordinatesWidget is no longer bounded by default.
Merge branch 'ctkvalueproxy'

* ctkvalueproxy:
  Add ctkDoubleSpinBox::SizeHintPolicy
  ctkDoubleSpinBox now keeps original precision until edited
  Fix decimals in ctkCoordinatesWidget with DecimalsByKey
  Propagate internal use of ctkQDoubleSpinBox to qttesting tests
  Apply ValueProxy to widgets min and max
  Update displayed value when value proxy is modified
  Propagate value proxy to other widgets
  Add value proxies

Conflicts:
	Libs/Widgets/Testing/Cpp/CMakeLists.txt
Added possibility to pass options to the Qt MOC tool.
ctkSettingsPanel - Trigger registered signal only if needed

QTextEdit triggers the "textChanged" signal when the user types a
character. Since after triggering the signal the widget text was reset
and the caret was repositioned at the end of the string, this was
making it very hard to update settings.

See http://www.na-mic.org/Bug/view.php?id=1904

See #359
Merge branch '359-settings-panel-trigger-signal-only-if-needed'

* 359-settings-panel-trigger-signal-only-if-needed:
  ctkSettingsPanel - Trigger registered signal only if needed
Extend error log API so that observer can be notified of new log entries

Fixes Slicer issue:
  http://www.na-mic.org/Bug/view.php?id=1349
  http://www.na-mic.org/Bug/view.php?id=2537
Merge branch 'tweak-error-log-api'

* tweak-error-log-api:
  Extend error log API so that observer can be notified of new log entries
ctkDICOMModelObject class and a test added
seqInsert and itemInsert modified
standard output streams commented
Add ctkDICOMUtil and ::setDICOMLogLevel helper

This function allows to set the DICOM log level for
diagnostic purposes.
Class name changed to ctkDICOMObjectModel and some stylistic modifications
seqinsert and iteminsert methods combined in a new method tarverseDataElemnts. The code duplication for seqinsert and iteminsert is solved.