throw an exception when a definition doesn't provide the expected tags

The ``DefinitionHasTagConstraint`` didn't work for me which means that the PHPUnit tests didn't fail when a definition didn't have the expected tags. It turned out that PHPUnit doesn't check the return value of a constraint's evaluate method. Instead, a constraint has to throw an exception when its check doesn't succeed.