Allow serialiizing/deserializing a `pl_dispatch`
Using the pl_pass.cached_program feature, we can serialize the pl_dispatch state and use it to speed up re-creation of the same shaders. Incidentally, we could also serialize the shader body itself and use it to recreate the actual shader as well, at pl_dispatch_create time.
Naturally, we should also extend this API to the pl_renderer.