First stab at pluggable attachment storage
Retire attachment chunk orphan cleanup
Add better error handling for file storage backends
Migrate file metadata table

  * Include a `bk` column to store the storage backend
  * Include a `signature` column which represents a repeatable hash of the
    file contents
  * Rename `hash` to `key` since it isn't a real hash
Fix several issues from initial mockup