(#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.