correctness
- changelog sequence without gaps

huge compile times:
- iron not small, but mostly reasonable deps
- does macaroon need both rustc-serialize and serde?
- sentry big but almost all "modern" hyper (0.12)
- slog has a lot of duplication (crossbeam)
- duplicated libs: 3 syn, 4 uuid, 3 crossbeam (etc), 2 hyper, 2 iron (wait,
  what?), 3x serde, 4x rand, 2x error-chain
    => rg '^name =' Cargo.lock  | uniq -cd | sort -n
- try: removing deps from fatcat-openapi
- uuid: could now switch to v0.7; needs code changes
- tweak crossbeam-channel version (used in fatcat-export)

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

edit lifecycle
- per-edit extra JSON

- account helper tool: set admin bit

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 hyper/openapi3 codegen branch
- refactor logging; simple env-logger-pretty
- test using hash indexes for some UUID column indexes, or at least sha1 and
  other hashes (abstracts, file lookups)