Clean up schema for table uploads
Per https://gitlab.com/gitlab-com/infrastructure/issues/1709 (private to GitLab employees):
- Wrong data type: created_at should be timestamptz
- Wrong data type: checksum should be bytea, save 6MB
- Duplicate data: model_type could be enum or 4-byte integer, save 1.5MB
- Duplicate data: uploader could be enum or 4-byte integer, save 3MB
- "Polymorphic" table prevents regular FKs, use triggers or change to independent columns or non-polymorphic tables
- Missing trigger for FK check: model_type = 'User', model_id -> users.id
- Missing trigger for FK check: model_type = 'Project', model_id -> projects.id
- Missing trigger for FK check: model_type = 'Namespace', model_id -> namespaces.id