Ability and AbilityResource updated

Now use the property system. It would be super nice if we could mandate
that a property key is strictly the class of the property... but we
can't. because custom implementations. so in the event that they do not
match, default to using that property the way it is, just like whoever
put it there intended.