portage_util: refactor SplitCPV to parse

Refactor SplitCPV to parse in BestVisible and FindPackageNameMatches.
Fix usages of those functions to expect a PackageInfo object rather
than a CPV.

BUG=b:187792048
TEST=run_tests

Change-Id: Ib522154cb22ed2b5a16d7ce77b888f55548baff8
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/chromite/+/3154283
Commit-Queue: Alex Klein <saklein@chromium.org>
Tested-by: Alex Klein <saklein@chromium.org>
Reviewed-by: Sergey Frolov <sfrolov@google.com>
Reviewed-by: Chris McDonald <cjmcdonald@chromium.org>
diff --git a/api/controller/packages_unittest.py b/api/controller/packages_unittest.py
index ee4e059..7834b24 100644
--- a/api/controller/packages_unittest.py
+++ b/api/controller/packages_unittest.py
@@ -237,17 +237,17 @@
 
   def testSuccess(self):
     """Test overall success, argument handling, result forwarding."""
-    cpv = package_info.SplitCPV('category/package-1.2.3.4', strict=False)
-    self.PatchObject(packages_service, 'get_best_visible', return_value=cpv)
+    pkg = package_info.PackageInfo('category', 'package', '1.2.3.4', 5)
+    self.PatchObject(packages_service, 'get_best_visible', return_value=pkg)
 
-    request = self._GetRequest(atom='chromeos-chrome')
+    request = self._GetRequest(atom='category/package')
 
     packages_controller.GetBestVisible(request, self.response, self.api_config)
 
     package_info_msg = self.response.package_info
-    self.assertEqual(package_info_msg.category, cpv.category)
-    self.assertEqual(package_info_msg.package_name, cpv.package)
-    self.assertEqual(package_info_msg.version, cpv.version)
+    self.assertEqual(package_info_msg.category, pkg.category)
+    self.assertEqual(package_info_msg.package_name, pkg.package)
+    self.assertEqual(package_info_msg.version, pkg.vr)
 
 
 class GetChromeVersion(cros_test_lib.MockTestCase, ApiConfigMixin):