New property optimizer (3rd attempt)

(Third attempt.)

This pull request contains a new property optimizer which can perform advanced optimalizations on a CSS selector body. It fixes the following issues: #173, #134, #168, #164, #184, #190, #210

Changes since the previous pull request:

* Dozens of new unit tests added
* Fixed batch tests
* Improved performance
* Added a good fix for #210 and similar issues

Remaining work:

* Enhance the new property optimizer to completely replace the old one. At this moment it just runs an additional step.
* Support for font, animation, transition and border to #134