Enable cross-modulestore copying of course asset metadata.

https://openedx.atlassian.net/browse/PLAT-38
Yeah, that's not the case. `@abstractmethod` forces the child class to implement something. However, an `@abstractmethod` might want to provide a default method so that a child could call `super()` and get some standard behavior.

That said, I tend to think that methods that set state should `pass`, and those that return values should `raise NotImplementedError()`, unless there is a clear standard default option.