Ok modules are still cursed af, so we need to investigate deeper

But the basics appear to gorram work.

To do next:

 * Make it so we can add new symbols to the symtbl without having to rename them all yet again (maybe use ! or @ or another token as a separator to just not nest renumber-ings?  Make UniqueSymbol actually have meaning?  idk)
 * Remove unneeded type params from functions
 * Make all the test_module tests actually do stuff and pass (probably needs breaking them into smaller pieces)
HOKAY it fuckin WORKS it's just like triple ugly
Need to add generated functions/etc to the symtbl I think?

Time for a bit of a break though.
heck no it ALMOST bloody works.

Time to rewrite this shit into a visitor
holy crap it does actually work
Convert lambda lifting to visitors.

Not a huge difference here, tbh.
welp visitor > expr_map for constinfer pass, though admittedly not by much
yeah not thinking about this yet
Hokay I think the thing here is we have to mono struct decls and constructors...
knew it had to be something simple
Refactor HIR visitor into its own damn thing
Ok something is wrong with the visitor

...or something.  I'm mixing up some data somewhere, and I'm not bloody
awake enough to track down why.  Very irritating.
Helps to actually output our new IR

Even if it reveals that my type substitution isn't actually substituting types yet
Monomorph now mostly runs (incorrectly)

Also finally forced myself to finish the passes::Visit trait and...
fuck my life it is very good so far.
sloooooowly getting there
So close to making monomorph work...
ok substitute_type is almost done
Forget me own syntax, smh
playing with conversions
Next