struct should now be usible across file boundaries

added test for use of struct across file
added IRTranslationUnit struct to represent codegen state wrapper around TU
general types no longer store cached llvm::Type*. structs will query
    the IRTranslationUnit for a type. arrays and tuples still store the old way (for now).
    this may cause a problem if the array,tuple contains a struct.