Implement classes Block and SubBlock.

It is still not decided what they hold.
Invent a class MergeRecord.
Rename Block.check_index() to _check_indexes().
Extract a method Block._normalize_indexes().
Store MergeRecords in Blocks.
Add a method MergeState.read().
Optimize taking a subblock of a SubBlock.
Implement a method Block.find_mergeable_blocks() (untested).
Add method Block.auto_outline().
Use existing merges in Block.auto_outline().

Otherwise there is nothing stoping already-outlined blocks
from being re-merged.
Add a method Block.auto_outline_frontier().
Remove known_failing_indexes argument from Block.compute_merge_frontier().
Move Block.compute_merge_frontier() to MergeFrontier.compute_by_bisection().
Add method MergeFrontier.map_known_frontier().
Store name in MergeState.
Implement saving of MergeState.
Move definition of find_first_false().
Allow Blocks to be written as ASCII or PPM.
Remove a bunch of obsolete code.
Implement MergeState.iter_existing_names().