adding vararg promotion that automatically converts Terra array values into
pointers. varargs can only appear in C functions where array value types do not exist. fixes #29
changing the semantics for aggregates:

struct A { a : int }
a = terralib.new(A)
a.a = 0

terra interracode()
    a.a = 4
    var pa : &A = a --'a' has type &A here
end
interracode()
assert(a == 4)

Previously each reference to an aggregate allocated in Lua but used in Terra
would make an entire copy the aggregate each time it was used, causing the above code
to fail. Now, aggregates used in Terra are automatically converted to pointers directly to
the Lua allocation of the aggregate. fixes #30
The same C type included from multiple calls to includec will result in the
same Terra type for each call. See tests/includetwice.t for an example.