Added type/scope checking for multiple definitions of arguments, fixed
scoping of function arguments and ensured function argument names
can't occur twice e.g. "int fun(int a, int a)"