Names are non-mutable structures representing names used by contexts.
A Name is a pair , where id is an identifier (represented as
a String, and subname a (possibly null) Name.
The "" identifier is reserved in contexts representing trees
to represent the root of the tree.