06e9dc55

Created Started Finished

Check with weeder that the whole library is tested

Stacked on #76.

Adds a `weeder-check` with `includeTests = true`, so the test suites count as
users: the libraries have no roots of their own, which makes the check assert
that the whole library is reached by a test rather than merely that nothing is
unused.  `Autodocodec.Usage` is rooted, declarations and instances both -- it
is a corpus of example types for readers and for the tests rather than code
that has to be used.

It reported 89 weeds.  The rest of the commits are what it took to get to zero,
and two of them are bug fixes it led to:

* `optionalFieldOrNullWithOmittedDefault` and its three siblings documented
  that they omit the key when the value is the default, but answered the
  underlying codec with `Nothing` for exactly that case -- and that codec omits
  the key when what it is given equals its own default, `Just defaultValue`.
  So the one value that should have been omitted was the one that got written,
  as null.  Nothing in the repository used these combinators, which is why no
  test said so.
* `unsafeUnboundedNaturalCodec` threw an arithmetic underflow on a negative
  number: `floatingOrInteger` reaches its result type through `fromInteger`,
  which throws for `Natural`.  A pure exception out of a parser, on input a
  parser exists to reject.

Also: the unused `Result` newtype is removed, and `ExactParseErrorMessage` is
now exported (`ExactParseError` already exposed a field of that type, so a
parse error could only be pretty-printed, never inspected).

`nix flake check` passes, with 1671 tests.

### Worth a look during review

`Result` was reachable through `Autodocodec`, which re-exports
`module Autodocodec.Codec` wholesale, so removing it is technically breaking.
Its own comment says it was never meant to be public.  No version was bumped,
so nothing releases until you decide.