Scheduler: fix reposyntax uninstall hash breakage
diff --git a/pym/_emerge/Scheduler.py b/pym/_emerge/Scheduler.py
index f237a02..312a7a3 100644
--- a/pym/_emerge/Scheduler.py
+++ b/pym/_emerge/Scheduler.py
@@ -1410,9 +1410,7 @@
 		if pkg_to_replace is not None:
 			# When a package is replaced, mark it's uninstall
 			# task complete (if any).
-			uninst_hash_key = \
-				("installed", pkg.root, pkg_to_replace.cpv, "uninstall")
-			self._task_complete(uninst_hash_key)
+			self._task_complete(pkg_to_replace)
 
 		if pkg.installed:
 			return
@@ -1752,7 +1750,8 @@
 			if previous_cpv:
 				previous_cpv = previous_cpv.pop()
 				pkg_to_replace = self._pkg(previous_cpv,
-					"installed", pkg.root_config, installed=True)
+					"installed", pkg.root_config, installed=True,
+					operation="uninstall")
 
 		task = MergeListItem(args_set=self._args_set,
 			background=self._background, binpkg_opts=self._binpkg_opts,
@@ -1983,7 +1982,8 @@
 			if world_locked:
 				world_set.unlock()
 
-	def _pkg(self, cpv, type_name, root_config, installed=False, myrepo=None):
+	def _pkg(self, cpv, type_name, root_config, installed=False,
+		operation=None, myrepo=None):
 		"""
 		Get a package instance from the cache, or create a new
 		one if necessary. Raises KeyError from aux_get if it
@@ -2003,9 +2003,11 @@
 		else:
 			repo_key = myrepo
 
-		operation = "merge"
-		if installed:
-			operation = "nomerge"
+		if operation is None:
+			if installed:
+				operation = "nomerge"
+			else:
+				operation = "merge"
 
 		# Reuse existing instance when available.
 		pkg = self._pkg_cache.get(