Use ancestor chain when checking valid class type

The dynamically generated setter allowed assigning a specified class or its
direct descendant, but it did not allow for arbitrary depth descendants. We
check the ancestor chain to see if the assigned object is a descendant of an
association. If the object is less specific than the association it will be
invalid.
Use InvalidTypeError when type is invalid

It was using the generic PolymorphicError which doesn't have a helpful message.
Bump to 1.1.3