lexgen refactor (#1181)
This is at a point where the new lexgen code roughly reproduces the
current ("legacy") codegen behavior. This means it can replace the
previous `lex/*.go` implementation. This version is somewhat more
complete and correct about the lexicon language in general, not just the
features we have used in the `com.atproto.*` and `app.bsky.*` lexicons
to date.
Things I might try to hit before merging:
- [ ] add some serialization tests (`./testing/`): records with
strongRef, recordWithMedia, unions, etc
- [x] resolve some more XXX and TODO
For later follow-up:
- [ ] API server handlers (for query and procedure), and ability to
disable client method output
- [ ] alternative CBOR library support (eg, annotations for `go-dasl`)
- [ ] ability to configure more package mappings (not just the indigo
pages)
- [ ] string, boolean, and integer query params as pointers
(configurable?)
- [ ] more correctness around `$type` serialization
- [ ] validation methods (for limits, etc)
- [ ] option to break out large query param lists as a struct