Prevent unbounded listener growth on SkPixelRefs.

Use SkIDChangeListener and update GrBitmapTextureMaker to add listener
to key to deregister if texture is purged before genID changes.

Add a common listener list implementation and replace existing lists.

Change-Id: Ib0c78241eaf59b59b892d8b004b2bb095140bc6d
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/274549
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
diff --git a/BUILD.gn b/BUILD.gn
index cf1e94f..584683d 100644
--- a/BUILD.gn
+++ b/BUILD.gn
@@ -1091,6 +1091,7 @@
     "src/core/SkEdgeBuilder.cpp",
     "src/core/SkEdgeClipper.cpp",
     "src/core/SkGeometry.cpp",
+    "src/core/SkIDChangeListener.cpp",
     "src/core/SkLineClipper.cpp",
     "src/core/SkMalloc.cpp",
     "src/core/SkMallocPixelRef.cpp",