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