Don't set name when constructing BlockFactory, as a step towards merging BlockOptions and BlockFactory
Don't set definition_prefix when constructing BlockFactory, as a step towards merging BlockOptions and BlockFactory
refactor ListBlock to take a factory object instead of a blockdef
Refactor StructBlock and StreamBlock to take a list of factory objects instead of blockdefs
kill off creation_counter from BlockOptions
get 'default' and 'label' from factory kwargs, not the BlockOptions object
Fix TextInput and Chooser, and the base BlockFactory, to not require a blockdef object
Assign definition_prefixes numerically rather than hierarchically; massively simplifies object construction and avoids issues with the same factory instance being used multiple times (e.g. child blocks of a StructBlock subclass which is instantiated multiple times)
Avoid duplicate html declarations for the same factory, by moving recursive behaviour out of the media / html_declaration methods and into an all_blocks method that uses sets for de-duplication
change FieldFactory to take a field directly rather than a block_options object
Remove dead BlockOptions subclasses
fix ListFactory to take a child factory directly, rather than a block_options object; ditch the ListBlock block options object
refactor StructFactory to eliminate the StructBlock block_options class
port StreamBlock to DeclarativeSubBlocksMetaclass too
kill off BlockOptions entirely, and rename *Factory classes to *Block
kill all remaining references to 'factory'