Change path string generation stuff (getRelativePath, etc)

Breaks unit tests
Redesign so that Name and Namespace are connected via references rather than via inheritance

The Name.GetRelativePath and Namespace.LookupRecursively methods still need to
be reworked and are commented for now.