Main purpose of this class is to allow working with IE8 bounding client rect (does not contain width and height properties and not polyfillable). Additionally, it encapsulates all rect-related functions, so region and coverage scripts are now much more consistent.
This allows gemini client script to run in older browsers, that have no support for `getComputedStyle`, `matchMedia` and `querySelector` methods (for example, IE8). Polyfill.io service is used as a library for this purpose. This commit still does not allow gemini in IE8 because of 2 issues: 1. `getBoundingClientRect` in IE8 does not contain `width` and `height` properties. 2. Full page screenshot contains border.
Now it has a bit different meaning then before: it allows to set max CIEDE2000 value not treated as difference. It is now also configurable on a 3 levels: global(config), suite and state. Due to possibility of different suite to have different tolerance API method `buildDiff` is now deprecated: it has access only to global tolerance, so diff it produces might not show exactly what caused test to fail. Method is kept for backward compatibility, but users of a programmatic API now encouraged to use `saveDiffTo` method of test result (passed to reporter) instead.
Suite got new method `.ignoreElements`, that allows to set a number of selectors, which should be ignored during tests. After screenshot is taken, the ignored elements are filled with black color on it before comparison. The format of data, returned from `prepareScreenshot` JS call is changed so that capture area and igonred area could be processed in a same way.