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/scripts/has_prebuilt.py b/scripts/has_prebuilt.py
index e2180bd..434e5fe 100644
--- a/scripts/has_prebuilt.py
+++ b/scripts/has_prebuilt.py
@@ -86,13 +86,13 @@
   args = ['-guDNqp', '--with-bdeps=y', '--color=n']
   if board:
     args.append('--board=%s' % board)
-  args.extend('=%s' % best.cpf for best in bests.values())
+  args.extend('=%s' % best.cpvr for best in bests.values())
 
   generator = depgraph.DepGraphGenerator()
   generator.Initialize(args)
 
   results = {}
   for atom, best in bests.items():
-    results[atom] = generator.HasPrebuilt(best.cpf)
+    results[atom] = generator.HasPrebuilt(best.cpvr)
 
   osutils.WriteFile(opts.output, json.dumps(results))