Validation tests & corrections

In the course of extending TestValidation to test _all_ possible check cases many small corrections to the validation code have been made.
The only more complex modification is that DimensionType now comes with an ostream overload and a util function to convert it to string that uses this ostream overload. This is being used in comparing units on tag references and Dimensions, to avoid throwing errors on SetDimensions which have no units by nature and thus shall not mean a unit mismatch.
As said before, I would rather use empty units here. Just noticed: isScalable and getSIScaling in their current implementation do not work with empty strings. If we would make them able to handle those, we could use the empty string here and the checks in util.cpp line 202ff would not be necessary