demonstrate similarity for discussion purposes
This is a demonstration rather than an actual PR.

There is some very similar logic in `internals.make_block` and `internals.form_blocks`.  For demonstration this PR separates the relevant bits out into `_get_block_klass` and `get_block_type`, respectively.

Suppose that the small differences in these two new functions were reconciled.  Then adding a custom block type would be a matter of adding it to `_block_type_klasses` along with registering some kind of hook in `_get_block_klass`.

There would need to be some cleanup at the end of `form_blocks` to map block types to `_foo_blockify` functions.

ref #17144
noci
