Module metadata

obviously this has a lot of shared code with the book metadata editing, i'm going to wait for one of these PRs to get merged and then DRY up the other one