Properly report line/character information for errors.
Properly preserve comments on a simple property assignment.
Emit comments before function expressions.
Preserve comment above a variable declaration statement.
Properly set limChar/minChar for tokens when converting to a tree.
Minor syntactic updates to conform to stricter rules so we can compile against generic lib.d.ts with pull
Rerebaselining emits
Compiler can now bootstrap itself when emitted via 'pull'
Propagate argument optionality from parent constructors to default child constructors
Set the appropriate AST flag for strict mode.
Merge branch 'develop-0.9.x' of https://git01.codeplex.com/typescript into develop-0.9.x
Updating baselines.
Rebaselining emit tests
Fix conformance bugs so the test harness can bootstrap
     Fix issue with merging text change ranges.

     Our current code for merging text change ranges was completely broken.  It assumed that all the changes could
     just be collapsed (using the algorithm we use to collapse the multiple edits we get when someone edits inside
     box selection).  As it turns out, the algorithms are very different.  Mainly because the inputs to both represent
     different concepts.

     the old 'collapse' algorithm consumes a set of edits made when a script is changed one version.

     The new collapse algorithm consumes the set of edits that happens as a script is continually edited across multiple versions.

     To see how this is different consider the changes [ { oldStart: 10, oldLength: 1, newLength: 0 },  { oldStart: 11, oldLength: 1, newLength: 0 } ]

     When converting from one version of a script to another this would just be a delete of two characters starting at position 10.  This is because
     the start of the second edit is in the same coordinates as the first.  And so there delete at '11' is immediately following the delete at '10'.  So it
     merges into { oldStart: 10, oldLength: 2, newLength: 0 }

     However, if this represents the edits between *two* versions of a script, then it's something else entirely.  In this case the delete at position 11
     is *not* abutting the delete at the position 10.  Indeed, from the perspective of the original version, the second edit is actually at position 12.  So
     it merges into { oldStart: 10, oldLength: 3, newLength: 1 }
Merge branch 'develop-0.9.x' of https://git01.codeplex.com/typescript into develop-0.9.x
Rebaseline expected errors so there are 0 failures
Remove use of quickParse.
Simplifying code.
Pass along linemap for error reporting.