Addition of structs

One test on ./driver.py fails, pointing to the main current issue with struct typing (see TODOs in resolvetyping)
so if you declare a struct foo, it will show up in your IR as "%foo = type { i32 }", but AFAIK there's nothing else that could end up as %foo since all typedefs end up getting resolved and all temps are %[[num]], and functions are in a separate namespace. 

That said, I don't know if LLVM itself has some reserved words, like %float or something,I tried making a struct i32 { bool b } and it didn't freak out or anything. Still, seems worrisome potentially.

 and I don't know if we'd ever introduce another way to access global type namespace (probably not, except maybe different kinds of records).