Revise algorithm for detecting overlapping ranges
Improve helper system

Add getHelpers and registerGlobalHelper, allow modes to specify arrays
of helper names, support modeProps in mode specifications.

Update foldcode and show-hint to make use of more powerful helper
system by defining an `auto` helper that tries multiple helpers, and
using that as default.
[css mode] Refactor, step 1 (tokenizer)
[css mode] Refactor, step 2 (state machine)
[css mode] Refactor, step 3 (Less support)
[css mode] Add a hintWords helper value
[css-hint addon] Rewrite to work with overhauled css mode
[css mode] Fix bad context management

Closes #2046
[css mode] Tweak indentation when opening @media block on new line

Closes #2047
[javascript-lint addon] Put JSHint options in a sub-object

Passing options causes issues in jshint since lint options are also
passed. These options cause bad option errors in the annotation list.
[css mode] Fix tokenization of paren-wrapped values

Closes #2048
[css mode] Fix previous fix (d3c3a5a2b8df669ed12fe90df4d62a143c0a9d25)

Issue #2048
[css mode] Revise indentation model

Issue #2049
[javascript mode] Fix bug in parsing of array/iterator comprehension
[test driver] Different approach to indentation tests

All tests now check whether indentation from mode corresponds
to the indentation in the test source. test.indentation is
gone.
another merage