Permanode Attributes

While a permanode can have any arbitrary attributes and values (and
each value can be single-valued or multi-valued), the following are
the conventional attributes and values used by the various tools,
search, FUSE, and web UI.

"tag": (multi-valued)

    a set of zero or more keywords (or phrases) indexed completely, for
    searching by tag. No HTML.

"title": (single-valued)

    A name given to the permanode. No HTML.

"description": (single-valued)

    An account of the permanode. It may include but is not limited to:
    an abstract, a table of contents, or a free-text account of the
    resource. No HTML.  As of 2013-12-28, not very defined yet.

"camliContent": (single-valued)

    when a permanode is a file, the camliContent is set to the fileref
    (the blobref of the "file" schema blob)

"camliContentImage": (single-valued)

    when a permanode has camliContent set, but the camliContent is of
    a non-image, the camliContentImage points to a "file" schema's
    blobref of an image representation of the content. For instance,
    this might be the cover art of an MP3 file or a thumbnail of a
    spreadsheet.

"camliMember": (multi-valued)

    when the permanode represents a set (unordered, unkeyed), the
    parent permanode (the container set) has a camliMember set to the
    permanode of each child element.

"camliPath:$dirent_name" (single-valued)

    when the permanode represents an associative container, each keyed
    child permanode blobref is pointed to by the "camliPath:$key"
    attribute on the parent.  This is used by the FUSE client, and
    respected in the UI (browser, publishing code), etc.

"camliNodeType" (single-valued)

    when the application needs to note the type of a permanode before
    any other attributes (like those above) are added which would otherwise
    imply its type, the camliNodeType lets applications be specific.
    This should only be used if another attribute can't imply it.
    Currently only used by FUSE to indicate the difference between a new
    file and a new directory permanode.  Known values include:

        * "directory". this permanode will have "camliPath:$key"
          attributes later.
        * "file". this permanode will have a "camliContent" later. for
          now, it should be treated as if it's an empty, 0-byte file.

"camliDefVis" (single-valued)

    Can be "hide". Experimental. Affects default visibility in web UI.

"xattr:$attr_name" (single-valued)

    when a permanode represents a file or directory visible to FUSE,
    "xattr:$x" is used to store the value for extended attribute "x".
    Extended attribute data may contain any arbitrary bytes, so values
    are base64 encoded.

"camliRoot" (single-valued)

    TODO: doc

"camliImportRoot" (single-valued)

    TODO: doc
