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.