fix clean
testing
Wrap all the things.

The goal is to make the API mostly safe (but not entirely, for now, since Values can be freed by being erased from parent), both for its own sake and so that if we end up (in some cases?) dropping the LLVM part in favor of something written natively in Rust, we don't end up using a pointlessly unsafe API.

For simplicity and performance of that hypothetical implementation, the API assumes that Values last as long as the Function, even if they get removed.

Still going to need a separate C AST.
untable parses? but is too slow
this is dumb too, no regex!
this is fucking stupid
...
manual in JS?
not quite, llvm is dumb
add gen.js
does not work
hmm.
This is more rational, but:

- Precedence is wrong.  Problem is that afaict, LLVM disassembler is right by accident (this is the VariableInstructions thing), since the ordering of the tests depends on the filter chosen.  I could easily be wrong, but if I'm not, I don't want to just copy it, because it's a mess.  Guess I can complain about instructions which never get decoded to.

- I don't have a strategy for dealing with discontiguous or huge conflicts.  Many bits would have to have a certain value to choose the more specific version over the less specific.  Can fall back to testing one insn at a time.

..... Is there a point to this?  I could just use the LLVM one.  Might be slower, but it couldn't be buggy.
complete dominance is no good
JANK
...
bindgen
I have no idea what I wrote
fix clean
fix make all