Restructure subscription to avoid races.

When the sending of the subscribed message was moved to the object's context,
that opened a thread gap in which events could be sent to the subscribing
client before it got the message indicating that it was a subscriber.

Now we do everything on the target object's context: note (in ObjectManager)
that there's a new subscriber, send the "here's a copy of the object" message,
and note (in Session) that we have a new subscription.

This ensures that no attribute change events sneak into the client's view of
the world before it gets its first snapshot of the object.
Provide a useful NexusObject.toString().