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 sdboyer/gps#60.

golang/dep,golang/dep,ibrasho-forks/dep,ibrasho-forks/dep,golang/dep