Transition all relevant testcases to it. In the process, port
docstrings/comments from test.py files to expected_concrete_syntax.lkt
(now test.lkt) sources and fix stylechecks issues there.
It may be interesting for file readers to return both decoded contents
and also diagonstics, for example when doing error recovery while
transcoding the source buffer.
The Read primitives currently does not allow this: Contents is
considered uninitialized when Diagnostics is not empty. Always expect
Contents to be initialized instead to support this case.
TN: VA17-001
As the LexicalEnv.get method always return an array of root nodes
while the root node is defined in user code, we need to turn the Node
and LexicalEnv classes into generic traits and instantiate them using
the actual root node.
To make this works, root node declaration has to be changed from
`class FooNode : Node` to `class FooNode implements Node[FooNode]`,
which required to refactor a bit almost all the lkt tests.
On Windows, the default encoding (not UTF-8) may not allow non-ASCII
test outputs. Use Python's "ascii" builtin where needed to ensure pure
ASCII test outputs.
TN: U720-016