In database:
    user.global_prefs: XML, within  tags
        may be empty; nonempty only if user has actually seen
        always includes  element
        includes ,  elements if
            prefs came from another project
    user.project_prefs: XML, within  tags
        always present.
        contains at least  element

In client:
    global_prefs.xml (present ONLY if have obtained from a server)
        same as user.global_prefs,
        but the following is inserted at start:
            
            
        stored in memory:
            in parsed form (as struct)
    account_XXX.xml
        same as user.project_prefs, but with the following added:
            
            
        stored in memory:
            in PROJECT struct
                master_url, authenticator, resource share parsed;
                project_specific_prefs raw XML (with enclosing tags)


RPC request:
    includes global_prefs.xml if it's there

RPC handling and reply:
    always send project prefs
    if request message includes global prefs
        if missing in DB, or request copy is newer:
            install in DB
        else if DB copy is newer
            include DB copy in reply
    else
        if present in DB, include in reply

handling of RPC reply
    if includes global prefs
        insert ,  elements if missing
        write to global_prefs.xml
        parse into memory
    project prefs
        insert ,  elements,
        write to account_XXX.xml file
        parse; update resource share, project_specific_prefs in PROJECT struct