2d7f3e14

By: Tom Sydney Kerckhove <syd@cs-syd.eu>

Read hopinion.yaml through the codec and nothing else

The list of keys the file may hold was written out beside the codec that
declares them, with a comment claiming the two could not disagree. They could,
in the direction that matters least visibly: a field added to the codec and not
to the list is a setting hopinion accepts and then refuses as unknown. The list
now comes off `jsonObjectSchemaViaCodec`, so there is one answer to what the
file may say.

An empty file was answered here rather than by the codec. It is handed on as an
empty mapping instead, so what an empty file means and what a file setting
nothing means cannot come apart.

What is left around the codec is the refusal of a key it does not declare,
which autodocodec is deliberately lenient about and this file must not be: a
key nobody has heard of reads as a rule turned off and behaves as a rule still
running.

The tests say so. `Choices` gains the two obligations every other codec type in
here has, `genValidSpec` and `jsonSpec`, and a property that anything the codec
writes is read back through the whole of `parseChoices`, which is what fails
the moment the keys it refuses and the keys it declares disagree. Blanking the
key list fails that property by name, checked. The schema the codec derives is
a golden, so changing what a repository may write in `hopinion.yaml` is a diff
somebody reviews.