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.
I feel we have different ideas of this :) My reasoning was this: we are passing around just units so that the check later has no idea what ```Dimension``` they come from. This means, that if we just replace the ```dimStr``` with an empty ```string```, we loose relevant info: the test would either fail or succeed for empty units, but it could not distinguish between the case when the unit was empty because not set, or was empty because from a ```SetDimension``` which cannot have units. The latter I felt should not fail ever. Thus ```mV``` being scalable to ```dimStr``` was the intended behaviour: ```dimStr``` is a magic word that makes the unit test always pass.