The Files and Images tabs for a CRM record (a contact or a company),
parameterized by :resource_type (:contact | :company), the :resource
struct, and :kind (:files | :images). Media is folder-scoped via core
PhoenixKit.Modules.Storage (see PhoenixKitCRM.Attachments): a
crm-<resource>-<uuid> root folder for :files, a nested Images subfolder
for :images.
Upload/browse is delegated to core's MediaSelectorModal (scoped to the
folder; the modal owns its own allow_upload). The modal notifys its result
back; we attach each file and refresh. Removal soft-trashes a sole-owner file
or unlinks a shared one. Every add/remove is activity-logged so it surfaces on
the Events tab. The Images tab can set the record's avatar (contact photo /
company logo). On the contact Files tab, files attached to that contact's
interactions roll up read-only.