Lazy save in GraphicsContext.

Investigation reveals that code frequently calls GraphicsContext::save
and then another save or restore with no state changes at all. State
saves are not cheap (they currently heap allocate a state object and
copy all the elements from the current state).

We should lazy save and we should attempt to avoid the allocations.
In a follow-up patch we will maintain a current SkPaint object for each
state, to avoid repeatedly setting up paint. This will add even more
cost to state save (to benefit all draw calls with that state) so it is
important we address this issue.

R=senorblanco,fmalita
BUG=334904

Review URL: https://codereview.chromium.org/137783014

git-svn-id: svn://svn.chromium.org/blink/trunk@166741 bbb929c8-8fbe-4397-9dbb-9b2b20218538