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)
Is there a good reason to keep these extra fields in a separate namespace? Maybe we should just allow for `**kwargs`, and store them the same that the required fields are stored.