Consolidate all the visitor chains into a single `VisitorChain` type.
Consolidate all the visitor chains into a single `VisitorChain` type.

Note: this was done in such a way as to preserve the existing tests unmodified!

saeta/penguin,saeta/penguin,saeta/penguin