Reland "centralize runtime effect caching"

This is a reland of ef7a28e26afb605ffcb170e35642e81027f27e9b

This time, no destructor for the mutex.

Original change's description:
> centralize runtime effect caching
>
> Relative runtimes for creating luma color filter:
>
>     - cached SkColorFilter   -->   1x
>     - cached SkRuntimeEffect -->  12x
>     - no caching             --> 186x
>     - this CL                -->  24x
>
> Added insert_or_update() to SkLRUCache because
> I keep falling into this trap using insert()...
>
> Change-Id: Ic3dad32d38fc001701d8e1ad5662ad382503418f
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/376776
> Commit-Queue: Mike Klein <mtklein@google.com>
> Reviewed-by: Brian Osman <brianosman@google.com>

Change-Id: I4a8612510d8a6961569698ead183b399e0c7c899
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/377236
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
4 files changed