A bunch of work on prog5, Got the scalar version working pretty much
completely, threads on the other hand...

I think I've realized the/an issue, libc doesn't know that my program is
multithreaded, I think the biggest area that this causes an issue with
is malloc, So I'm going to write my own kinda crappy malloc and use
that.

Oh another thing, thread local storage doesn't `just work`, if I want
tls I'm going to need to do a lot of work to figure out how it works,
but I don't think I actually need it, I made the thread_id, the only
thread local thing, stack allocated so no more tls.