Steadily nibbling away on things
progress maybe
Boy equality of uvar's in unit tests sucks ass

and I don't know how it SHOULD work; either we make sure we generate
identical uvar ID's in identical contexts which is Hard, or we compare
uvar's without comparing ID's which sounds like a great way to create
footguns further down the line.

...actually now that I think of it, the problem is that uvar ID's are
global mutable state and our tests don't reset it.  Hmmmmm.
Sort out a subtle state bug with unification vars.

It seems to work, but I still need to make UnknownInt stuff work properly so lots of tests
fail currently.  Like block_comment1.gt.
wip fiddling with uvar ids
ok unification is being pesky again
Ok, more work combining unification with type inference.
Making tuples work better

test_tuples3.gt still doesn't work, 'cause of generic name stuff.  Not sure if
that's something I should handle rn.

It also helpfully panics in a different place if you run it with
`RUST_BACKTRACE=1 RUST_LOG=trace` , 'cause it bombs out trying to print
diagnostics.  :D
Starting to make tuples work
nibbling on unification
omg I think if's work
Finally get to actually do nbe stuff again

Next up: If exprs
Fix broken IndexChecker

Feels kinda silly but here we are
holy heck I did something right
Someday I'll have a systematic approach to integration tests
Remove hir::Expr::Block since hir::Expr::Let does the same thing now
Cleanup for let lowering
Ok the let-expr nesting works.  Time for cleanup.
WIP for let expr changes

Ok well structurally the let conversion from "let x = y;" to
"let x = y, a = b in ..." is all cleaned up.  But actually doing that
conversion during lowering is currently a todo!().

Oh, I think I know how to make it work...
Next