Update stroke path to use rect returned from isRect (to fix trailing moveTo bug)

This basically recreates what was done in:

https://codereview.chromium.org/16950021/ (add rect-output parameter to isRect, allowing us to return the correct bounds even if a rectagular path has a trailing moveTo) with the addition of GM representation

BUG=skia:247770

Review URL: https://codereview.chromium.org/834503002
Move ViewMatrix off of drawstate

BUG=skia:

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