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.py b/api/controller/packages.py
index 2a00827..2a98e47 100644
--- a/api/controller/packages.py
+++ b/api/controller/packages.py
@@ -120,8 +120,8 @@
   if input_proto.build_target.name:
     build_target = controller_util.ParseBuildTarget(input_proto.build_target)
 
-  cpv = packages.get_best_visible(input_proto.atom, build_target=build_target)
-  controller_util.serialize_package_info(cpv, output_proto.package_info)
+  best = packages.get_best_visible(input_proto.atom, build_target=build_target)
+  controller_util.serialize_package_info(best, output_proto.package_info)
 
 
 def _ChromeVersionResponse(_input_proto, output_proto, _config):