forms: Add media to widgets

This will allow for more complex widgets to be added as plugins which
include css and javascript media files without manually adding header or
footer lines.
forms: Add file upload field type
forms: Use new file upload field for staff response
files: Orphaned files hang around for 24 hours
forms: Use file upload widget for canned response attachments and notes
upload: Reduce file processing client-side
upload: Fix several validation processing errors
forms: Use new file upload widget for canned response designer
forms: Deduplicate canned attachments
forms: Add download links for canned attachments
forms: Use new upload widget for FAQ articles
forms: Use new upload field on the client portal
forms: Add attachment configuration to the thread entry
forms: Use the new upload widget for staff response on ticket open