Fixed bug where properties that had been redefined in a subclass were still appearing in the declared properties array.

The array of FDDeclaredProperty objects should not have two objects
that have the same name. This indicates a property was redefined in a
subclass and the latest definition of the property is the only one that
should be returned.
Declared properties are now cached on the class they are created from.
Removed caching from the declaredPropertiesForSubclass method.

I don’t know why I thought caching was needed on this to begin with.

Objective-C’s dynamic nature makes it so that a property can be added
at any time so caching a list of a class’ properties would only work if
I knew when to invalidate that list.

In addition, caching in general may need to be removed for all
instances of FDDeclaredProperty because I am not 100% sure that a
property’s attribute string can not be changed at runtime.