SVG: optimize transform group creation
SVG: optimize transform group creation

This patch ensures that we only create transformation groups when it is
actually required and that we re-use transform groups as much as possible.
It reduces the number of transform groups for the Tracemonkey paper from
2790 to 1271, thereby making the DOM much lighter and rendering/scrolling
smoother. Moreover, it simplifies the code and prevents duplication.

Finally, we issue a warning when an unimplemented graphic state is
encountered. Before, this was ignored silently, making debugging harder.

nawawi/pdf.js,timvandermeij/pdf.js,mukulmishra18/pdf.js,a0preetham/pdf.js,mainegreen/pdf.js,nawawi/pdf.js,1and1/pdf.js,adlerweb/pdf.js-Touch,showpad/mozilla-pdf.js,mainegreen/pdf.js,mozilla/pdf.js,xavier114fch/pdf.js,nawawi/pdf.js,jasonjensen/pdf.js,tinderboxhq/pdf.js,macroplant/pdf.js,jasonjensen/pdf.js,Shoobx/pdf.js,1and1/pdf.js,timvandermeij/pdf.js,WhitesteinTechnologies/wt-vaadin-pdf.js,macroplant/pdf.js,showpad/mozilla-pdf.js,Shoobx/pdf.js,skalnik/pdf.js,websirnik/pdf.js,Snuffleupagus/pdf.js,Shoobx/pdf.js,skalnik/pdf.js,caremerge/pdf.js,Snuffleupagus/pdf.js,timvandermeij/pdf.js,xavier114fch/pdf.js,Snuffleupagus/pdf.js,mysterlune/pdf.js,a0preetham/pdf.js,tinderboxhq/pdf.js,yurydelendik/pdf.js,websirnik/pdf.js,mysterlune/pdf.js,mozilla/pdf.js,yurydelendik/pdf.js,Rob--W/pdf.js,macroplant/pdf.js,ydfzgyj/pdf.js,ydfzgyj/pdf.js,Rob--W/pdf.js,mozilla/pdf.js,showpad/mozilla-pdf.js,caremerge/pdf.js,WhitesteinTechnologies/wt-vaadin-pdf.js,adlerweb/pdf.js-Touch,mukulmishra18/pdf.js