Insulate solving from map iter non-determinism
Insulate solving from map iter non-determinism

Prior to this commit, there were two (maybe one) places where solver
behavior could be made non-deterministic due to the randomness of map
iteration.

The first is when populating the atomWithPackages representing the root
package. PackageTree.Packages was ranged over and the keys used to
construct a []string, which was then saved as package list on the awp.
This probably wasn't causing non-determinism, but it was an easy fix,
and a one-time (root-only) sort, so no reason not to fix it.

The other case was walking a map of needed external packages in
getImportsAndConstraintsOf(), which ultimately determined the order in
which an atom's dependencies were checked against the satisfiability
conditions. This most certainly affected solver determinism.

Fixes #60.

chx/gps,sdboyer/gps,sdboyer/vsolver