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
Remove unnecessary multifile code
forms: Add cancel support to upload widget
forms: Add print and export for the upload field
forms: Add image preview concept to file upload
Add hover preview and several css tweaks
forms: Add IE9 support for file upload field

Only one file is supported at a time now; but at least the files are saved
and displayed in the event of validation errors.