
Solver algorithms:
------------------

- the solver allows arch changes from/to noarch without complaining.
  good or bad?

- vendow changes are allowed from unknown to known. libzypp doesn't
  allow that. Feature?

- should prune_best_version_arch consider the arch or the vendor this
  is about an installed package?

- repo priorities should influence the order in which package rules
  are fulfilled.

- prune_best_version_arch has a n^2 loop when looking at obsoletes.
  Should we create an obsoletes index to speed that up?



Code cleanup:
-------------

- move whatprovides/whatprovidesdata from pool to solver?
  good: can implement installed(), though I don't know if we need
        it.
  bad: need to allocate solver if we just want to look up a provides.
       can't re-use whatprovides for multiple solver runs with different
       solvers.

- implement unified idarray in pool, so that repos don't have to
  come with their own idarrays? Would need memory for hash, but
  unification would be a nice thing. Would also fix solver memory
  leak with learned rules. Needs some hard numbers abour memory usage.

- make bitmap macros inline functions?

- rename ID Macros to ID_, e.g. ARCH_NOARCH to ID_ARCH_NOARCH?

- support different streams than FILE in repo_ functions? Is it
  enough that glibc supports FILE overloading, see the undocumented
  fopencookie()?

