Fix Types.toString for numbers in scientific notation

We were converting numbers like 6776767677.006771122677555 to
6776767677006771000000000 instead of 6776767677.006771.
Fix String.prototype.split to do as the tests test, not as the spec says
Array.prototype.push should update the length property
We were accidentally defining elided array indices in interpreted mode
Fix -1 % -1 to return -0 instead of 0
Number.prototype.toString should return Types.toString for numbers with radix 10
PrimitiveDynObject can't short-circuit defaultValue logic without breaking specs
Lookup Array.prototype.join separator before checking length to comply with spec
Fall back to double for values greater than long's maximum

This causes a loss of precision, but that's exactly what the spec
expects.

This needs a corresponding change in BasicByteCodeGeneratingVisitor
once I figure out how to do a try/catch in bytecode there.
Types.toUint32 should return 0 for -0
Use Types.compareEquality vs .equals for array lengths
Create function declarations for functions inside statements
Bump to join 2.dynjs.incremental.3
Merge branch 'pr/69'