Refactor Music deconstruction code out

Refactor to pull Music deconstruction out into its own module, and give
it a proper set of types.