Changes behavior of `--keep-line-breaks/keepBreaks` option to keeping breaks after selector's trailing brace only.

* Old behavior allowed line breaks within selector, like 'a\np{}'.
Makes all multiple selectors ordered alphabetically (aids merging).

* Thus 'p,a{}' becomes 'a,p{}' which is semantically equivalent.
Adds merging adjacent selectors if body is the same.

* Skips if selector is vendor specific, i.e. matches /-(moz|ms|o|webkit)-/.
* Will not merge selectors if one selector may not be supported, e.g. :nth-child, :last-child, etc. - configurable via `--selectors-merge-mode/selectorsMergeMode` option.
* Defaults to merging all selectors so `ie8` mode needs to be forced via mentioned options.
Refactors property merging into a separate Optimizer singleton.
Adds property overriding so more coarse properties override more granular ones.

* E.g. 'border-top' overrides 'border-top-width' and 'border-top-color'.
* Another example is 'margin' overriding 'margin-(bottom|left|right|top)'.
Adds reducing non-adjacent selectors.

* Removes repeated properties in same selectors which are not next to each other.
* E.g. '.one{color:red;margin:0}.two{color:#fff}.one{margin:1px}' will become '.one{color:red}.two{color:#fff}.one{margin:1px}' because margin is repeated.
Adds `--skip-advanced`/`noAdvanced` switch to disable advanced optimizations.
Adds ignoring misplaced top level curly braces.
Adds reducing non-adjacent selectors when overridden by more complex selectors.

* E.g. "strong{color:red}.one,strong{color:#fff}" can be reduced to ".one,strong{color:#fff}".
* Fixes property optimizer when body is empty.
* Fixes property optimizer with merging on joins.
Improves property overriding & redefining algorithm.

* Handles redefining overridden properties.
* Treats -ms-filter/filter as a background / background-image property.