Func calling

Fucntion calling is now semantically checked.  I didn't get to do any expansion of returns types, I will add that if we have time.  Also for default args I did it so that you have to enter all the non defaults and any number of the default args.  Look at the default arg tests to see what fails and passes with this.

Function calls are both expressions and stmnts.  `foo();` is a statement and `x = foo()` foo is and expression.  When calls are expressions they must have exactly one return type.  This may have to change when we get errors?

Also let me know of any test cases that I missed.  I'm sure I forgot a few cases
can you elaborate on why we need this type?