prevent infinite recursion that can arise from closed loop of forward & reverse relations

In my investigations into using reverse relations in my app (see #88) , I was getting infinite recursion on `set` of my object graph.  Added a check to make sure that the relation-spawned recursive `set` doesn't happen if the value is already there.

I haven't isolated a sample case nor added a test for this, but figured I'd send the PR first.  (In case it'd be obvious to you how to create a case that would trigger this.)