Source management and structured diagnostics for the Deed compiler.
Nothing here knows anything about the Deed language. It exists so that no part of the compiler ever has a reason to return an error as a string.
[hashing] is the odd one out and it is here because [Span] is: every
pass keys a map by one, and the hash they are looked up with is a property
of the key rather than of the pass.
See design/01-principles.md, P7.