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
Merge branch 'new-object-model'

Conflicts:
	client/peerdrive/connector.py
	server/apps/peerdrive/src/peerdrive_ifc_client.erl
client: don't clobber .peerdrive with settings
Use shorter default attachment name
server: fix creation of client ifc cookie file
server: store per-user client ifc cookie in /tmp

The client ifc cookie file is a per-user AND per-machine file and thus
should be stored in /tmp instead of the user home directory. And while
we are at it do the same for the pid-file and the console log.
server: fix crash when merging folders without meta data
server: fix crashes when unmounting a store with open handles
server: add test suite for synchronization
server: fix fuse stat reply

On unix 'struct stat' contains two additional fields to represent the
size of a file: st_blksize and st_blocks. Set these two fields too on
top of st_size to fix e.g. 'du'.
server: use ErlDokan 1.2.0
Remove empty messages from client protocol
server: vfs: fix renaming of files
server: fix peerdrive.bat
Ephemeral revisions

Ephemeral revisions are just like any other revision except that their
parent links are weak, that is they do not prevent garbage collecion of
their ancestors. As such, the history of these revisions will be trunced
with every garbage collector run. Such revisions are usefull to track
files in PeerDrive that are not important such as:

 * Caches (thumbs.db)
 * Special system files (desktop.ini, .ds_store)
 * Temporary files (foo.txt~)

As a side effect ephemeral revisions cannot be merged effectively
because they loose their history quite fast. In fact the merger and
replicator stop at ephemeral revisions because it makes no sense to
merge and/or replicate them.
server: vfs: use regex list to mark documents as ephemeral

Use a user changeable list of regular expressions in the VFS layer to
mark maching file names as ephemeral. The default list has the following
content right now:

 * "thumbs\.db"
 * "desktop\.ini"
 * "\.ds_store",
 * "~\$.*"
 * "~.*\.tmp"
client: properties: show rev flags
server: work around R16 deprecation warnings