Revert "Revert of factories should return baseclass, allowing the impl to specialize (patchset #4 id:60001 of https://codereview.chromium.org/1390523005/ )"

This reverts commit 95376a0dde3cdf414eb97a20cef3af19ed7e0151.

BUG=skia:
TBR=

Review URL: https://codereview.chromium.org/1389083002
18 files changed