Added `length` function (#1542). Added scalar value handling for `extract` and `length` (#1576).

I hope it's not too bad idea to merge two features in the single pull request since both functions are heavily related (should work in conjunction, handle arguments in the same way and share same tests)...

Notes:
* See #1576 for "scalar value handling".
* Values like `@var: a b c, 1 2 3` (see #1542) are interpreted as a "multidimensional" array/list - this is current `extract` behaviour and `length` just follows the same pattern (see included tests for details).
* Interpolated list values like `~"@{var-1}, @{var-2}, @{var-3}, etc"` are treated as a scalar value (i.e. length = 1). This functionality is somewhat beyond both functions scope and needs some further discussion/decision anyway...
* While escaped empty value `~""` is interpreted as an array of length 1, "true empty value" (you can get it via `...` arguments) works as a zero-length-array (see test/css/extract-and-length.css:38 and test/less/extract-and-length.less:39)
* See included tests for more examples/details...