This spec is quite incomplete! The plan is to migrate everything from simdgen's
categories.yaml files into the spec and replace categories.yaml. As we're doing
so, we should think carefully about:

1. The doc comment for each operation. Let's start moving toward a more formal
   style for mathematically specified operations.

2. How every operation generalizes across types, sizes, and especially to
   scalable vectors. The spec is meant to be *maximalist*, circumscribing what
   every architecture can do.

3. In what cases operations are architecture-dependent.

Tasks
- [ ] Hook specgen into simdgen, probably unioning the categories.yaml input and
  the specgen input while we transition
- [ ] Migrate categories.yaml to spec
- [ ] Figure out how to represent compiler-only (non-API) simdgen operations
- [ ] Delete categories.yaml
- [ ] Incorporate specgen into other generators, so the spec becomes the sole
  source of truth for all exported APIs.
  - [ ] tmplgen
  - [ ] wasmgen
- [ ] Build a tool to ensure hand-written APIs (emulations, etc) match the spec.
  Maybe the hand-written code still lives directly in archsimd, but as
  unexported function, and the generator writes the trivial exported API glue
  for these.
- [x] Generate a full reference implementation for testing that provides the
  SIMD API but just wraps the spec package. (Done: _gen/cmd/refgen)
- [ ] Generate conformance tests of the archsimd API against the spec testing
  layer.
