implements new key to identify pq_strings for easier comparisons.
replaces one of the o(n^2) string comparison steps with an unordered map.
non-summed index permutation identification is still handled at o(n^2) complexity
fixes an error introduced in the variance branch where pq_string->factor could sometimes be non-negative (it is assumed to be negative in print statements)