correctness
- extra or typo-d fields in requests don't seem to be errors (silently accepted)
- reread/review editgroup accept code
- changelog sequence without gaps
- batch insert editgroup behavior; always a new editgroup?

refactor:
- consistent `conn` and `context` orders in _handler() functions

edit lifecycle
- editgroup: state to track review status?
- per-edit extra JSON

account helper tool
- set admin bit
x create editors
x create keypairs
x generate tokens
x test/validate tokens

later:
- "prev_rev" required in updates
- tried using sync::Once to wrap test database initilization (so it would only
  run migrations once), but it didn't seem to work, maybe I had a bug or it
  didn't compile?
    => could also do a global mutex: https://github.com/SergioBenitez/Rocket/issues/697
- could some of the EntityCrud trait macro stuff be re-implemented as an enum type?
- pure-rust "benchmark" scripts that hit, eg, lookups and batch endpoints
    => criterion.rs benchmarking
- try new actix/openapi3 codegen branch
- refactor logging; use slog
- test using hash indexes for some UUID column indexes, or at least sha1 and
  other hashes (abstracts, file lookups)