Rework PeerDrive object model

Historically PeerDrive was designed in two separate layers. The base
layer should just provide the storage facility for binary data with the
addition to track the history. The layer above should have added some
necessary structure, e.g. PDSD, to make something useful out of the
basic layer.

This scheme did not hold up because the two layers were dependent on
each other, thus breaking the clear layering. The reason is that the
base layer needs to know the links between documents (e.g. for garbage
collection) but this information is part of the upper layer. This led to
some some ugly hacks like parsing certain parts of documents ('META',
'PDSD') just to recover the links between documents.

This rewrite rectifies the situation by doing away with these two layers
and changing the PeerDrive object model into something more database
like. Documents now consist always of a first class structured part.
Additionally a document may have any number of arbitrarily sized
attachments.

This change completely breaks backwards compatibility, that is for
stored data and also for the various protocols involved.
client: folder: save some overhead on load
server: fix common test testsuite