First stab at adding MetadataManager

This is NOT ready to merge yet. I'll be adding implementation for the functions in the next couple of days.
This looks in need of a refactoring (into the ether, I think—the `apiVersion` property above should cover this behavior).