More consistent named color variables (#1595)

See #1595.
#### Summary of changes:

1. Color variable outputs a named color if this variable was defined with a named color.

2. Named color is NOT used after you apply any math operation or one of the color processing functions (even if the value itself is not changed):
```
@teal: teal;
1: @teal;             // -> teal
2: (@teal + 0);       // -> #008080
3: (@teal / 1);       // -> #008080
4: spin(@teal, 0);    // -> #008080
```

3. Fixed the following inconsistency (#1382):
```
1: red;               // -> red
2: /* oops */ red;    // -> #ff0000
3: red                // -> #ff0000
```
Now all three are `red`.

4. This patch does NOT change the following:
```
1: (wheat + #111);    // Error
```

5. Named to numeric color conversion. `color` function now also accepts unquoted args and always outputs a numeric value:
```
@plum: plum;
1: color(@plum);      // -> #dda0dd
2: color('#dda0dd');  // -> #dda0dd
3: color('plum');     // -> #dda0dd
4: color(#dda0dd);    // -> #dda0dd
5: color(plum);       // -> #dda0dd
```

6. `color` function now performs more strict "3/6-digit" conversion. This fixes the following inconsistencies:
```
1: color('#123x');     // -> #112233NaN
2: color('#010y');     // -> #001100NaN
3: color('#01020z');   // -> #010200
4: color('#12345');    // -> #1122334455
5: color('#123 etc.'); // -> #112233NaNeeNaNccNaN
```
Now such cases result in a error.

7. Added support for case-insensitive colour keywords (follows #1803).