A protocol for PATH_NAMEs to describe themselves to other objects.
A typical session goes like this:
call start_join describing you drive (if any) and whether you are absolute or relative
Repeatedly call the join_xxx procedures to desribe yourself, more significant elements first (i.e.
Caveat: the only way to make sure that the target is not changed at all is by not starting a session. A
call to start_join (even with drive=Void and absoluteness=0) immediately followed by a call to
end_join can have some benign side-effect on the target (including some amount of normalization being performed).