Added AbilityCriteria Class

AbilityCriteria is abstract class which is base for Ability.
This class holds criteria and static methods to create the funcs used.