Provide a mechanism for testing attribute validity based on a set of Categories
Currently Attribute::isValid returns the validity based on all of the items it contains. This has the unfortunate side effect of stating the attribute is valid due to an item that has been filtered out based on its categories. This forces the template designer to always have default values for items that could be filtered out. It would be better if isValid could take in a set of categories and any items not satisfying that set based on its categories would be skipped (or alternatively have its isValid method return true - since the item is suppose to be ignored). If the input set is empty then it should indicate that all items should be tested for validity regardless of their categories.