fixed function/global/type accesses across modules

llvm::GlobalValues are not supposed to be accesible in more than on llvm::Module.
    and Since llvm::Function's are llvm::GlobalValues, the same applied to functions.
    As it were, I only codegen'd GVs once and used that value across all modules.
    This is incorrect, and caused crashes and issues while linking. This should now be fixed.

On the other hand, llvm::Type's are accessible across all Modules. I was Regenerating them every
    module, causing issues with the same AST Type refering to different llvm::Types.
    I've fixed this so Types are only codegen'd once now.

Added 'IRType' and 'IRValue' to be wrappers around ASTType/ASTValue and their respective
    llvm equivilent. Will need to convert all of the codegen functions to return an IRType/IRValue

SymbolTables are now aware of the TranslationUnit or Package they belong to.