Generalize assets to any block_type but using

AssetKey and the metadata store
PLAT-204

@cpennington @doctoryes plz review (hopefully I'll fix the 2 typos I just noticed before you get to it)
One last question: Should any of the other arguments of this constructor also be passed in via `fields` rather than explicit args?  For example, is there a reason for the asset store to know about the `contenttype`?