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.
There are two checks here:
* one is if `fileId` argument is passed in and if it is, then it should be used, otherwise the first entry should be used (not necessary the original PDF, but the first in priority)
* is a template passing in its `options` argument to a template helper or not (this is why you are checking if it is `_.isString`

First thing should be in `cachedFIlename`. Second thing should be in `url`.