Retain object over -setValue:forKeyPath:

Fixes #1182 

Since the bridge cast does not retain the object, we're effectively messaging an `unsafe_unretained`, which can be deallocated during the course of `-setValue:forKeyPath:`. Using precise lifetime here gets us the retain of `object`.