Unveil, as a stash of vnodes

After a few discarded designs, what we settled on in kernel was a per-process structure that holds and remembers directory vnodes looked up at the time of the unveil() call.

- Unveiling a non directory remembers the name underneath its directory vnode.
  - non directories may be removed/recreated after unveil.
  - directories may not (they will appear not to exist after the vnode
  changes)
- Keep lookup costs in the unveiling process as much as possible