[graphite] Separate gradient data handling from PipelineDataGatherer

 * The PipelineDataGatherer was responsible for both collecting uniform data and managing storage for gradient color/stop data. This commit separates these concerns by introducing a new FloatStorageManager.

 * The FloatStorageManager is now solely responsible for allocating and de-duplicating gradient data buffers. The PipelineDataGatherer continues to manage uniform and texture data for each draw.

 * This change provides better separation of concerns and simplifies the PipelineDataGatherer.

 * As part of this refactoring, the `gatherer` parameter was removed from many key-creation functions. The gatherer and the new float storage manager are now accessed via the KeyContext, simplifying function signatures throughout the precompile and paint params key generation code.

Change-Id: I33b36e08750760d2725c57ad12bd9c2891db0fb7
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/1031636
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Commit-Queue: Thomas Smith <thomsmit@google.com>
35 files changed