(#22557) Validate that a package name is a string

The package providers assume that the name of a package resource is a string,
but the type allowed the name to be anything. This caused some manifests to
pass several different names in and rely on an accident of the provider
implementation that allowed that to work in some situations. Since the
providers were never intended to work with multiple names, this changes the
type to validate that the name is simply a string.