beginning transition to allow quote ... in ... end blocks.
'block' ast node now represents a new scope and contains a single treelist.
a 'treelist' now represents a list of statements followed by expressions, but does not start a new scope on its own.
some corner cases such as the scoping of repeat .. until .. end, or the need to stitch blocks together in checkstmt are now eliminated.
Removing implicit resizing of parameter list.
If foo() is a function that returns two arguments placed in the last position
of an expression list then it must be bound to exactly two variables:

var a,b = foo() -- ok
var a = foo() --error
var a = (foo()) -- ok, truncated
var a,b = foo(),2 --ok, foo used where only 1 expression possible

A macro truncate(N,bar()) will eventually be added to the standard set of macros
that will truncate bar() or any other expression list to exactly N arguments
for when N ~= 1.

This change helps eliminate surpsing situations where typechecking succeeds
by discarding arguments in the parameterlist, such as the following

terra returnstwo()
	var a = "bar"
	return 1,@a --meant to write 'a', not '@a'
end

terra overloaded(a : int) return 1 end
terra overloaded(a : int, b : &int8) return 2 end

terra callit()
	return overloaded(returnstwo()) --value is 1, because it can shorten it two the first overload
                                        --this will now result in an error
end
better disambiguation for overloaded methods. favor methods
that do not require any implicit conversions over those that do.
fixes #28
fixing a bug in overload resolution and adding a new test for it.
simplifying logic of code generator: dead blocks are always emitted and then cleaned up.
refactoring typechecker to enable quote .. in .. end statements.
typeexpressionlist is gone, lists are not represented by treelists.
typedexpressions re-injected into the compiler are represented by typedexpression nodes.
treelists are used anywhere a list of statements or expressions is required in typed ASTs
they contain the following fields
   statements - list of statements to run to prepare this list
   expressions - list of expression resulting from the statements
   next - [optional] another treelist with further statements or expressions to emit
   types - the _total_ list of types that this treelist will create, including types produced in next blocks
           this can be shorter than the sum of all the expressions in the treelists if the list has been truncated
All rtol and ltor conversion in the type checker have been removed along with functions like aslvalue and asrvalue for
managing them. The codegenerator now determines when to convert lvalues to rvalues.
adding truncate macro, more tests.
removing tabs, nothing else.
coverage and tests for macro argument api.
more tests for let statement form.
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.
Merge branch 'master' into letinend