Final (alpha) fix of getter-setter patterns
ImplContainer::nullify() new function to nullify the impl_ptr

Nullifying means setting to nullptr ;-)
Use ImplContainer::nullify() instead of setting imp_ptr directly
ImplContainer::impl() return reference and add const version

Return a reference instead of a copy
Access ImplContainer's impl_ptr only via impl() everywhere
ImplContainer: change impl_ptr visibility to private

Access is done via impl() for the shared pointer itself or via
backend() if the managed pointer is wanted. Latter access is
guarded, i.e. throws an exception if impl_ptr is empty.
ImplContainer: Add brief docs for backend() & impl()
Fixed createDimension & added appendDimension
Removed "try-catch" from DataArray::dimensions
Extended tests for createDimension & appendDimension in DataArray
[win] Add NIXAPI to Dimension classes (fixes build)
Exceptions: Add new UninitializedEntity exception
ImplContainer: Use new UninitializedEntity exception

Closes issue #134
[test] ImplContainer: Add test for UninitializedEntity exception
removed setter of dataType in Property, getter returns Value.type
Docstrings in Property.hpp
[win] [test] DataSet::testValueIO change naming of value dsets

This fixes the test on window.
new InvalidUnitException
Property::unit checks for SI units, add testProperty::testUnit
moved unit checks and validation to Property.hpp