Add bootstrap3 testcases

Split out code from lessc.test.testless into lessc.test.bootstrap for
reusability. The bootstrap3 test suite consists of two less files (that
@include all the others):

 - bootstrap.less
 - theme.less
Support function calls in expressions

LESS allows functions to be operators inside LESS operations and
bootstrap3 actually makes use of that.
Proper support for variables in escaped values.

The following constructs are escapes: ~"..." and ~'...'. Inside, only
@{...} is a LESS variable, @foo is not! To express that, the lexer needs
to additional states ('lessstringquotes' and 'lessstringapostrophe') and
some parsing rules special to those states. The literal '~' had to be
promoted to token too. Now, instead as marking the complete LESS string
as 'less_string' token, the lexer properly tokenizes it's content which
in turn the parser can properly evaluate.

Includes a minor bug fix, t_less_variable() wasn't ever used because
t_css_ident already captured them. This part was removed from
t_css_ident becaus it's much easier to overwrite t_less_variable in lexer
states.
LESS strings can contain $MS CSS filters

.klass {
  filter: ~'alpha(opacity=2)';
}
Only use css_ms_filter in fcall

The lexer catches Microsoft-specific function calls such "progid:..."
and "DX.Transform..." in the css_ms_filter token class. It should be
used only as the function for "fcall" constructs in the parser.
Support swapping "@{...}" type variables

These only occur in interpolated strings (~'...' or ~"...").
CSS strings can contain variables too

Ordinary CSS strings may contain @{...}-style variables. Here are some
examples:

    content: "@{breadcrumb-separator}\00a0";
    background-image: url("@{file-2x}");
    .col(@index + 1, ~"@{list}, @{item}");
Add t_tilde token for '~'

To be used inside general_sibling_selector (e.g. 'a ~ b { ... }')
instead of the literal '~'. Necessary since we had to remove the literal
from the lexer in order to tokenize ~"..." and ~'...'.
Bring back support for @@name variables
Properly name escapes and interpolated strings

Escapes are seperate to interpolated strings.
Support selector interpolation

Quote from lesscss.org: "prior to LESS 1.3.1 a (~"@{name}") type of
selector was supported. Support for this will be removed in 1.4.0.".
Meanwhile, interpolated selectors look like .@{name}.

For this, the lexer needed another state. Promote literals '{}' to
tokens to be able to drop the 'istring' state when '.foo{' occurs
(rather than '.foo {').
Promote literal ':' to token
Add new HTML5 'main' and 'template' tags
Enhanced hack for 'rect' DOM / function ambiguity

'rect' is a DOM element and occurs as a function. Currently, the parser
doesn't have a list of valid function names but uses css_dom elements
(and some others) to identify function calls.

Therefore the lexer got additional state tracking a while ago. This
turned out to wrongly work on constructs such as "button::-moz-$FOO,
input::-moz-$BAR", where 'input' was marked as 'css_ident' rather than
'css_dom'. This is fixed by resetting the 'in_property_decl' state
variable after a comma.
Drop unused productions
Simplifiy ~"-Some::weird(#thing)" test

I don't think it makes sense to test for that just now. The function
call parsing should be significantly enhanced before.

Changed to ~"-Some(#thing)" instead.
Ignore missing whitespace in escaped strings

Function argument lists are missing whitespaces after each comma with
the currenct escaped strings code. However, the minified version had
commas before which wasn't any better.

Likely an easy fix somewhere but shouldn't block now.
Support style and identifier lists in escaped strings.

Example:

  .foo {
    transition: ~"border-color ease-in-out .15s,
                  box-shadow ease-in-out .15s";
  }
Fix mixin guard comparison operator list

The operator list includes "=<", but not "<>", "!=" or "<=". Properly
adjust test cases and drop occurences of invalid operators. Raise a
syntax error if an unknown operator is used. See
http://lesscss.org/#-pattern-matching-and-guard-expressions
Deferred variables inside @media identifiers

Followup of 11895c