Fix an issue with cache_rename(). This procedure previously copied a
namecache entry to a new one and then invalidated the old one, operating
under the idea that the namespace structures should remain consistent.
However, the curret, root, and jail directories for a process are stored as
pointers to namecache structures and renaming a directory resulted in
the current, root, or jail directory for related processes becoming invalid.
Changes to the namecache structure over the years (separately allocated
nc_name, rehash support, etc) now make it possible to implement the
cache_rename() by physically renaming the namecache structure instead
of copying it, allowing process references to be retained.
NOTE: There may still be a race against nlookup's.
Reported-by: Vincent Stemen <vs1@crel.us>
Testing-by: Vincent Stemen <vs1@crel.us>