Fixes for binary arithmatic operators.

1) Binary arithmatic is allowed when one side is undefined/null and the other side is any/number/enum.
2) Spans were swapped for errors reported on the rhs/lhs of a binary arithmetic expression.
Simplifying resolution code.
Update instanceof type checking code to match specification.
Simplifying type assertion resolution.
Update typechecking of 'in' operator to match spec.
Do not pass the 'in contextual assignment' when resolving a logical or expression.
Do not pass hte 'incontextualassignment' flag when resolving a logical-or operation.

Note: this affected the 'noImplicitAny' feature.  It used to always report an error
if it saw an empty object literal that wasn't in a contextual assignment.  That meant
that we were now reporting an error for the following pattern:

var v: string[] = something || []

In this case though it is totally bogus to report a no-implicit-any error.  The type
of [] is "undefined[]" and as that never gets widened to "any[]" there was no implicit
"any".  I've fixed this by only reporting this error if we have an non-any array that was
actually widened to an "any[]".
Clean up code for type checking a conditional expression.
Clean up code for the comma expression.
No need to add "null" as a top level global variable.
Clean up code for resolving an expression statement.
Remove unused method.
Clean up code for resolution of assignment statements.
removing unnecessary code.
Remove unnecessary node caching.
Fix issues that was causing the Type-Writer to emit 'any' for lots of expression *not* of the 'any' type.

Specifically, while trying to find the containing decl, the typewriter looked for a non-null decl.
Unfortunately, the resolver returned 'undefined' in a lot of places, and hte typewriter accepted that
as non-null.

Fixing this caused a large number of typewriter baselines to change.  I did random spot checking of
all the cases where 'any' became a better type.  These all looked ok.  I also did checking of every
case where a non-'any' type became 'any'.  In all these cases, 'any' was the appropriate type, and
it was an improper decl that caused the non-any to be returned.
Simplifying resolution of 'this' expressions.
Typecheck should call typecheck methods, not resolve methods.
inContextuallyTypedAssignment should not be used for a return statement.
inContextuallyTypedAssignment should not be used when resolving an index expression.