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 "<=". See
http://lesscss.org/#-pattern-matching-and-guard-expressions
Deferred variables inside @media identifiers

Followup of 11895c
Fix block fills generation with only variables.

If the parsed block contents contains only LESS variable definitions,
the block should not be renderend. Previously this was implemented by
not returning self from Variable.parse() (contrary to it's docstring and
other plib classes). The real fix is to just check for the above
condition and return self again.
Not recurse forever if missing mixin declarations

Bail out after recursing 10 times into Deferred.parse and raise syntax
error for missing declaration to provide a meaningful error message.
Otherwise the code loops until the interpreter stack end (max
recursion depth).