Small error reporting bug.
Fixed a type checking error associated with returning function calls.

Public Function get_num() returns Number
{
    return num;
}

Public Function increment_num() returns Number
{
    num += 1;
    return get_num();
}

would cause a type checking error.  This was because when type
checking, the function would compare to the return type of getn_num,
which was a tuple and put the entirety of the tuple in one tuple index
to compare against given return type.  Ie, it would say increment_num
should return {Type: Number}, but instead, it is returning,
{Type:
  [{Type: Number}]
}

Fixed by unwrapping in case of function call returns.
Fixed type checking on variable initializations from function calls.
A lot of the type checking logic was broken when I introduced tuple
return types.  For example,

Public Function some_func() returns Bool
{
    return True;
}

if (some_func())
  return True;

would not compile because the predicate of the if statement expected a
bool, but some_func returned a tuple.  This code now unwraps single
returned tuples and uses their types when type checking.
Merge remote-tracking branch 'origin/master' into v4
Added emit tests to testing infrastructure.
Forgot to add file that ensures imports all of libraries that emitter actually relies on.
Minor bug: had been using incorrect node types in newly modified code.
Merge branch 'master' into v4
Added append statement for lists, plus test case.
Added tests for emitting binary operators.  Still need to add a test
for the 'in' operator.