schema updates, util updates, setup drag-and-drop
- `campaign_source_material` table: use composite primary key
- `equipment` table: separate weight column into weight_value + weight_unit, and cost column into cost_value and cost_unit
- add `genre` table and `sourcebook_genre` junction table