Reapply "[rust png] Support SkPngRustEncoder from `FuzzEncoders.cpp`."

This reverts commit eebbe2e53a1a0c1b0775816214f66de826e1de19 and
relands https://review.skia.org/1090776.  Patchset1 corresponds to
the original/previous CL.

The reland is possible, because https://crrev.com/c/7118842 landed
first in Chromium (removing a Chromium dependency on the fuzzer for
the legacy, `libpng`-based PNG encoder that _this_ CL makes conditional
on `#if defined(SK_CODEC_ENCODES_PNG_WITH_LIBPNG)`).

This CL could be relanded as-is, but to preserve fuzzer coverage it also
adds a new `.cpp` file with the `main` entrypoint for fuzzing the new,
Rust-PNG-based encoder.

Original CL description follows below:

> Before this CL, `fuzz/FuzzEncoders.cpp` would have a hard-coded
> dependency on `libpng`-based `SkPngEncoder`.  After this CL, the
> choice of the encoder is controlled by
> `SK_CODEC_ENCODES_PNG_WITH_RUST`.

Bug: chromium:381900683
Change-Id: Ia4c1a700c8c61ae3d2adb82a2ae9cb872c2df247
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/1092696
Auto-Submit: Ɓukasz Anforowicz <lukasza@google.com>
Reviewed-by: Kaylee Lubick <kjlubick@google.com>
Commit-Queue: Kaylee Lubick <kjlubick@google.com>
3 files changed