Switch back to accurate total height computation in calculateScrollPos

Closes #679
Linting (semicolons, accidental globals)
Add a linter, run it as part of the test suite
Change vim iterList to a standard for loop.

This fixes an error in the case that extra properties have been added to
the array prototype.
Make sure display is updated properly on cursor movement

Closes #684
Switch main library over to strict mode
Move 'use strict' inside of main function

To prevent problems with script concatenation.
Mention codemirror-announce list on project page
Specify character encoding on all pages.
Bail out of measureLine when editor is not in the DOM

That'll make getElementById fail to return our measure element,
which shouldn't break the whole editor anymore now.
Add some more random variance to temp element id
[xml-hint] Move from .substr to .slice for old-IE compat, fix offset bug

Closes #692
Save memory on null pointers in Line object
Remove some tailing spaces
Fix testsuite in IE
Make tests pass on Opera

And move browser detection up in the codemirror.js file, to prevent
further instances of 'use sniffing before actually doing it' bugs.
Migrate from innerHTML to DOM bindings / fragments.
Emulate textContent setter in case of IE
Clean up and optimize tab/invalid char rendering in getElement

Issue #698
Remove CodeMirror.htmlEscape

Issue #698