Refactor derive content and resources code
Allow users to publish revisions of something from archive

The way to create a draft from something in archive is to POST to
/users/contents with the archive content id.  For now, if the username
of the logged in user and the submitter of the archive content match,
then a draft will be created, otherwise you get 403.  If the id is not
found in archive, you get 404.