Remove global mutable serializer registry

This is the logical extension of earlier work to always pass the
Writes around (and to pass only Writes, not the whole Format).

With those earlier cleanups it isn't such a big deal to pass
the serialization registry around where it's needed too.
Yeah, just caching them on State when we load the project. It's probably not a super important optimization but why not.