Pluggable storage infrastructure

This patch allows plugins to be stored outside the database. There is already a plugin compatible with this patch in the osTicket/core-plugins repo for storing attachments on the filesystem.

Outstanding:
  * [ ] Resumable file migration. Currently migration is assumed to complete in a single pass (request)
  * [ ] Piece-wise attachment upload, useful for very large file attachments
  * [x] Support de-duplication in thread body attachments