Add tests and refactor undefined properties metric.
Edit comments and formating.
Increase immutability of data types.

Also split the UndefinedPropertiesOrClassesProblem in two separate objects.