server: refactor peerdrive_vol_monitor
peerdrive-applet: show menu even if server went down
replicator_worker: use a set instead of a queue for backlog

The replicator is always replicating one document at a time with its
complete history. While traversing the history any referenced documents
are added to the backlog. With deep histories the same documents are
added many times to the backlog.

Previously a queue was used for the backlog which led to the situation
that most documents were handled over and over again on deep histories.
By using a set for the backlog each referenced document will only be
replicated once.
struct: fix dictionary merging

Dictionary merging was broken because of two issues:

 * The handling of deleted items was wrong and could crash the
   function if an entry was deleted by all revisions.
 * Comparison of dictionaries was broken too and always returned
   'false'.
server: implement sync call on stores
sync_worker: prevent stale updates

Force the write back of any dirty data on the destination store before
setting the anchor in the source store. This prevents the possible loss
of update indications from the source store if the destination store
dies before it was able to commit the latest synchronized documents.
file_store: use only dets tables

This creates considerably less IO when writing back all changes compared
to dumping the previously used ets tables to the disk.
volman: add function to query system store
sync_manager: reduce code duplication
util: add function to walk a path
Add registry module
ifc_vfs_common: guess type code from file name
Make all Ids variable length

Right now all Ids (DId, RId, PId) are fixed to 128 bit and the whole
value range is used. Some Ids might need to be extended in the future
which would not be possible with this scheme.

By making the length of Ids variable it is easy to define new formats in
the future. Right now Ids stay at 128 bit whereas RIds and PIds are
extended to the full 192 bit SHA1 range.
Use binary hash trees for part hashes

The SHA1 hash sums of the parts are now computed as binary hash tree
with a block size of 4096 bytes. This ensures that the new hash sum can
be calculated quickly if only small areas in a very big part are
changed.
Store comments as a dedicated field in revision

The comment about a revision is very special compared to other meta
data because it directly relates to the revision as entity, rather than to the
contents of the document. Also, the comment should be given explicitly
for every new revision and otherwise be reset.

Now the comment can be given when committing or suspending a document.
The comment will start empty for each newly created revision. The stat
operation on a revision can be used to read the committed comment
afterwards.
client: adapt comment meta data column in folder view
server: fix crash when registry is updated
netstore: improve read performance

Read requests are slit according to the maximum packet size before going
to the remote store. This introduces a round trip delay after each such
packet. To hide these network latencies the read function tries to keep
two requests simultaneously in the flight.
server: prevent garbage collection for put_doc

The handle returned by the put_doc store operation can be kept open even
beyond the commit. In turn, the created document will be exempted from
garbage collection just like if the document was created with 'create'
as long as the handle stays open.
server: extend forward_doc operation

Add the ability to atomically drop a preliminary revision of a document
when it is forwarded. This allows to the resume-commit operation to be
implemented by using forward_doc.