Ensure that values are unique for an Enum class.

- Add a new Validator which will check for uniqueness and  append increasing numbering to names
- Use this to ensure that Enum names are unique
- Add unit test
Refactor class name validator to use new uniqueness test.

Add unit test for class name generation.
ArrayOf* types ganeration as separate classes
Merge pull request #165 from red-led/3.x

ArrayOf* types ganeration as separate classes
Merge pull request #161 from kasperg/fix-unique-enums

Ensure unique Enum values