PTFM-10996 Cache describe output and read it in listxattr/getxattr.

This saves one API round trip for both of those calls (as an example,
"ls -l" issues 3 getxattr calls for every file listed). A whitelist of
attributes known to be mutable (e.g. 'state') are never cached.
PTFM-10996 Make stat more efficient.

Store each directory's entries in a dict keyed by the object's name,
rather than in a list. This means stat can find the correct item in a
single operation (per directory level) rather than having to iterate
over all the files in the directory.

(This should help with "ls -l" performance; it stats each file being
listed, which was previously altogether quadratic time in the number of
files in the directory.)