Add PDF Normalization

#566. Still need to fix some coffeescript syntax, use random.Id, add a database migration, change `files` to `cached`, and update comments.
Then search the list. :-) What in fact you want to do is:
* verify that `cachedId` exists
* `files` contain an `fileId` entry, or that it is non empty

Probably we don't have to check for `mediaType`, not sure when it would not exist (only as an error).