Validation

So I finally decided to make this a pull request before it grows even bigger. Sorry for the size, but at least its broken down into many tiny commits. :-)

This is close to the final version of the entity validation: I have little more that I could add without further input. In particular I would appreciate input on what to validate in / on: Block & Feature entities.

The following changes go beyond just the validation and might need discussion:
-As proposed in the issues I have implemented ```as*Dimension``` type specific getter in the ```Dimension``` entity. Therefore changing the order in which the classes get defined in ```Dimension.hpp``` was necessary.
-As proposed in the mailing list in some classes I split the multi-getter (e.g. ```references```) into two overloads instead of one method with default parameter to allow passing it to the validation.
yes you are right, delegation is the only right thing here, just hadn't given it much thought not being sure if we keep it