Make synchronization service extendable, update userprojects model

It seems a bit unsafe to provide a ``generateUuid`` method that sets the ``uuid`` which can than be easily and/or accidentally overwritten with ``setUuid``. Why do you need/provide both?