prep for changing multiple return values.
structs always require field names now.
the function tuple(arg1,...argN) constructs a struct with names _0 ... _N
and has a __cast behavior to match it to any type. {2,3} construct tuples.
{ a = 4, b = 5} construct a new struct type, that can cast to any struct containing a subset of the named fields
{a = 4, 5} is now invalid.
{1,2} constructs a tuple rather than make a new type.
put line coverage generator in a single place in terralib.lua
changing behavior of multiple returns. They now implicity create an anonymous structs (tuples).
an upcomming commit will allow assignment to expand a tuple.
casting from an anonymous struct (tuple or named) to a named struct
must now be done explicitly:
  var a = A {1} --ok
  var a : A = {1} --not allow, implicit cast
This change was made because previously the empty struct {}
was convertible to any other struct type, which could lead to subtle errors.
defvar desugar's to an assignment with allocvar:
var a,b = 3,4
becomes:
allocvar(a),allocvar(b) = 3,4
in the typed ast.
this should make it easier to desugar pattern matching on structs.
adding pattern matching for tuples
var a,b,c = 1,{2,3}
adding unpackstruct macro
var r = {1,2}
return twoarguments(unpackstruct(r))
remove tcwrapper reliance on types being in the global table.
updating coverage for new return argument behavior
changing formal parameter list to mirror other lists,
multiple symbols can be spliced in place even if it is not the last element of the list.
call terra functions from lua no longer automatically unpacks multiple return values.
instead you can call terralib.unpackstruct in lua:

terra foo() return 1,2 end
local a = foo() --a cdata struct of 1,2
local b,c = terralib.unpackstruct(foo()) --1, 2
make sizeof/terralib.sizeof and unpackstruct/terralib.unpackstruct
the same object. Each has different behavior when run as a macro vs. directly from Lua code.
Merge branch 'master' into develop
accessing non-existant fields on types now throws an exception.
this should make errors due to the change in the api function function returns
easier to spot.