Merging into the migrated 4.3.0 branch, original changes are from @scottbommarito
Creates a `MetadataReferenceCache` class. It caches references to `string`s and `NuGetVersion`s and can be used to replace duplicate values in our metadata models. The cache only lives for a short amount of time--a single request--so it does not take up significant amounts of memory itself.
Also added a couple fields to particular models.
- `V2FeedPackageInfo` and `PackageSearchMetadataV2Feed` now have `Created` and `LastEdited`, which are exposed in the feed.
- `PackageSearchMetadataRegistration` is a subclass of `PackageSearchMetadata` that contains a `CatalogUri` and is returned by `PackageMetadataResourceV3`.
Merging all test utilities together. Test.Utility is now a common layer that all tests can use that sits between the product projects and test projects.