optimise matrix multiplication in PageState
optimise matrix multiplication in PageState

* as we track the matrix modifications after each glyph is rendered to
  the page the vast majority of matrix multiplications involve a simple
  horizontal displacement
* detect this case and use a simplified method that allocates
  significantly fewer objects to reduce GC pressure

tardate/pdf-reader,nmadura/pdf-reader,eitoball/pdf-reader,yob/pdf-reader,yob/pdf-reader,gordonbisnor/pdf-reader,boutil/pdf-reader,yob/pdf-reader,nifarius/pdf-reader,tdenovan/pdf-reader