Issue #42 Added support for virtual properties to validate element attributes. Also refactored PropertyData classes for better seperation of concerns.