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)
@nasthagiri You would like which? The use of fields as a dict or adding all the kwargs as more attrs? I'm having a hard time figuring out how to figure out which fields to serialize if I add them as attrs (unless I record them someplace else).