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.
Is `cachedFilename` called from a template, or is `url` called from a template? This check should be done in the method which is called from the template.

And add there something like:

```
# To allow calling template helper with no arguments (id will be options then)
```