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
Merge pull request #133 from balint42/fix_createDimension

Fix createDimension

LGTM
Merge pull request #132 from gicmo/impl_ptr_private

Make ImplContainer's impl_ptr private

:+1:
[win] Add NIXAPI to Dimension classes (fixes build)
Merge pull request #135 from gicmo/win32fixes

Add NIXAPI to Dimension classes to fix the build on windows
Exceptions: Add new UninitializedEntity exception
ImplContainer: Use new UninitializedEntity exception

Closes issue #134
[test] ImplContainer: Add test for UninitializedEntity exception
Merge pull request #137 from gicmo/uninitializedEntity

Add new UninitializedEntity exception and use in ImplContainer
removed setter of dataType in Property, getter returns Value.type
Docstrings in Property.hpp
Merge pull request #139 from jgrewe/data_type

Intermediate solution for DataType handling in Property

LGTM