It can be quite difficult to get Content Blocks revisioning with the entity to which they are attached. This is complicated by the fact that scenarios in which content blocks are heavily used can clutter the block placement UI with an enormous number of blocks that were likely never intended for reuse.
We need a new way of interacting with Content Blocks that does not save them in a traditional entity approach. A null save that allows us to get the result of this save and serialize it into the block configuration. Serialized content blocks would be treated as a revisionable string in panelizer's normal operation which would mean that content blocks used this way would automatically revision with the rest of the "config" blocks because the storage would all be on the panelizer field.
We need to really clean up the following patch, update schema, make certain our UI stuff all makes sense and test out weird stuff like dates and file/image fields. Also, it's best if this field hides the configuration block's label form elements and just overrides the normal label with the title of the content block entity. We do that already for panelizer's IPE integration but need to figure out how to do it more generically.
User interface changes
A new section under IPE's block placement will be "custom" (I'd like to probably change this to inline). Within that section you'll find "Inline ..." blocks. These are what you want to test with. New ones should appear there automatically when you create new content block types.
This code depends on Inline Entity Form module. Be certain to download it if you want to play with this.
Data model changes
We introduce a new block type (inline block). So the existing data model's not changed, we're just abusing it a bit. :-D
I didn't do this first pass at a patch on my own, phenaproxima was instrumental in helping to make this happen as was tedbow.