Add safety around accessing node for an OFD, clean-up xattr code for path vs. ofd

There are a few fixes here.  First, the way we are working with open files is a bit flawed, because we never check if the node's exist--we assume they do (they should!) but if they don't, we'll blow up when the returned `node` is undefined.  I've made `ofd.getNode()` work more like `find_node`, which will error if the node doesn't exist--all of our code paths assume this is the case now.

The second thing is to clean up how we do xattr stuff, and separate path vs. ofd logic, deal with errors early, get rid of the `node` check etc.

This should help catch issues like @k88hudson was having, and let us figure out where the bug really is.
Here's the problem. Unlink should not remove the file if there are open descriptors. Currently we only check `nlinks < 1`, but we should also test for relevant OFDs. From `unlink(2)`:

> If that name was the last link to a file and no processes have the file open the file is deleted and the space it was using is made available for reuse.