Block: remove inheritance from IBlock

Move some definitions to source file.
DataTag: remove inheritance from IDataTag

Move some definitions to source file.
Feature: remove inheritance from IFeature
File: remove inheritance from IFile

Move some definitions to source file.
Property: remove inheritance from IProperty

Move some definitions to source file.
Section: remove inheritance from ISection

Move some definitions to source file.
SimpleTag: remove inheritance from ISimpleTag

Move some definitions to source file.
Source: remove inheritance from ISource

Move some definitions to source file.
Entity: remove inheritance from interfaces in base classes
types: rearrange class declarations
Dimensions: remove inheritance from interfaces

Move some definitions to source file.
DataArray: move more definitions to source file
general: optimize imports a bit
compare: front-end vs back-end version

compare in the back-end now takes a shared_ptr of an implementation
the front-end version takes an front facing object
Merge branch 'nix-307'

Conflicts:
	include/nix/DataArray.hpp
	src/DataArray.cpp