Requests for comment/Change LESS compilation library

This document proposes changing the library we use to compile LESS in core.

Background
When LESS support was implemented in core lessphp (leafo, lessc) was used in the implementation however another LESS compiler written in PHP exists, less.php (oyejorge, Less_Parser).

Reasons to switch from lessc to Less_Parser

 * lessc's original creator no longer has time for the project and most of the activity now appears to be maintenance.
 * Less_Parser has a better import path default, it doesn't add the current dir after the other import paths like lessc does which is part of the cause of /.
 * Less_Parser also supports import callbacks and appears to allow different path roots to point to different folders
 * AFAICT dynamically defined variables in Less_Parser (defined from PHP) override the static global ones in less files, which matches Less.js' behavior and may be of use to us.
 * Less_Parser doesn't require the Ctypes extension like lessc does
 * Less_Parser supports source maps which we had hopes to implement in core. lessc doesn't so it would be impossible to implement for LESS currently.
 * Less_Parser has better feature parity with the official lesscss/less.js parser, while lessc is relatively out of date. lessc is missing a number of newer LESS constructs and sometimes parses LESS outright wrongly not following the official behaviour. lessc's parsing is close to that of less.js somewhere in between 1.3.x and 1.4.x (less implements some 1.4.x syntax while not implementing others) while Less_Parser's in theory implements everything implemented in less.js 1.6.x.
 * Merge:
 * min/max
 * Parameter interpolation:
 * default
 * lessc incorrectly parses LESS like this http://lesscss.org/features/#mixins-as-functions-feature
 * contrast gives wrong output, no shade , ...
 * lessc incorrectly parses LESS like this http://lesscss.org/features/#mixins-as-functions-feature
 * contrast gives wrong output, no shade , ...

Issues with the transition

 * Less_Parser does not currently support custom function, however there is a recent patchset that implements it.
 * Custom functions for less will not be backwards compatible as the API for implementing them is different.
 * We will need to port our two custom functions.
 * Any extensions or skins that used will need to port the custom functions they used.
 * Less_Parser's performance may not be as good as lessc's (https://github.com/oyejorge/less.php/issues/60)
 * Less.php/Less_Parser is Apache 2.0 licensed which may conflict with our use of GPL2 (strictly speaking less.js is also Apache 2.0 though it can be found in core at docs/kss/styleguide-template/public/less.js)