RPC: revise semantics for weak references and object IDs
Now:
- Strong references (handles) and weak references (references) are kept in separate arenas.
- The ObjectIds we return are even more opaque, to prevent accidental misuse even more.
- Inserting the same Arc as a strong reference twice returns two different handles.
- Inserting the same Arc as a weak reference twice returns the same reference, encoded in two different ways to prevent misuse.
- Our docs are a little more accurate.
Closes #848 (closed).