Various particle system improvements

Effects now have a duration, and can be played looped
or one-shot. Added a second list of affectors that are
applied at spawn vs. update.

Effects grab and store the SkRandom at construction,
so it no longer needs to be passed to update().

Bug: skia:
Change-Id: Ib54d60466e162e4d4b70fa64c1215fc01680d47a
Reviewed-on: https://skia-review.googlesource.com/c/191722
Commit-Queue: Brian Osman <brianosman@google.com>
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
diff --git a/resources/particles/snowfall.json b/resources/particles/snowfall.json
index ddfe92e..865893f 100644
--- a/resources/particles/snowfall.json
+++ b/resources/particles/snowfall.json
@@ -40,7 +40,7 @@
       "P1": { "x": 61, "y": 34 },
       "P2": { "x": 606, "y": 32 }
    },
-   "Affectors": [
+   "Update": [
       {
          "Type": "SkJitterAffector",
          "X": {