New praefect nodes data interface
This is a new data model for the nodes configuration in praefect.
Each Node can be a primary, or secondary for a repository.
I simplified the MemoryDatastore as well so we no longer need a separate concept for a "shard."
In our simplified case, we have a node that serves as the default primary if no primary is configured for a given repository. That way we can also simplify the config file to just provide a list of servers, and the first one gets chosen as the default primary for all repositories.