divrep: sequences involving arithmetic series related to tau(n)

This initial commit loses a lot of prior history; primary focus
is on values of OEIS sequences A165500/A165501 and related proofs.
divrep: explicit suppression for m rad(m)

n+kd == um (mod m rad(m)) is suppressible when gcd(u, m) = 1
and tau(m) ~| tau(n).

This doesn't currently seem to suppress anything we weren't doing
already, but is part of a wider attempt to clean and refine the
constraints.
divrep: improve and regularize output

Hide a bunch of diagnostics behing debug; make it easier to report
incomplete sequences; record and report the number of incomplete
sequences.
divrep: fast init for prime n

If n is prime, the only thing we can usefully do is avoid primes,
the rest of the checks are wasted.
divrep: report example of each new incomplete sequence
divrep: separate addseq support to separate program

addseq investigates A165497-9, but is not my current focus, and
having support for it as an option to tauseq is getting in the way.
divrep: use an array of testers

Sometimes (eg for n=pq) we can refine some cases to a faster
primality check (eg for n+pd); create the mechanism to support
those (and also change the order we test things), and use it
to support the specific pq case.
divrep: new search for quadratic residue constraints

Prompted by the failure of the existing iter_quadres_series logic
to spot that f(243, 4) could fix_square(3), first pass at a faster
and better replacement quadres_series.

Temporarily uses a new command-line switch '-nc'; there are still
some constraints the old code finds that the new code doesn't,
eg 12 (mod 36) and 24 (mod 36) for f(45, 2).
divrep: extend quadres_series for q^s m rad(m)

.. along with a rewrite for clearer separation
divrep: split out discern_rad()
divrep: use discern_rad also for test_m_rad_m

Also rename v -> u to avoid confusion with vectors; remove unused
labels; elide iter_coprime (seems clearer when explicit)
divrep: simplify square_fix check and quadvec check
divrep: share the loops for quadratic residue suppression
divrep: absorb quadres_series into test_m_rad_m
divrep: replace iter_quadres_series with enhanced test_m_rad_m
divrep: handle quadratic residues mod 2^m in test_m_rad_m

p=2 uniquely has quadratic non-residues mod 2^(m+1) that are
residues mod 2^m; check for this when looking for non-residues
to suppress.
divrep: (experimental) order testers by most knowledge

This change makes the common cases more informative but (probably)
slower - we check for gcd(k, n) and tau(gcd(k, n)), then choose the
order of testing k by descending tau, then descending gcd, then
ascending k.

So given a search for f(18, 8), we'll search in the order
6, 3, 2, 4, 8, 1, 5, 7. In practice, this seems to mean we put the
tests most likely to pass first, so the (301) result lines are more
informative about the rate of passes; but that means we reject
slower, so factorize more on average per number tested.

See the TODO for an alternative approach.
divrep: TODO on fix_square
divrep FIXME added

Trying to find a limit on k for a particular n by binary chop is
made a lot slower by the cascading propagation of denied values
to other moduli, getting worse at least quadratically as the -c<x>
option is increased.

This can be fixed, at least in part, by checking for it earlier;
it is likely also this would allow a better diagnostic (since
currently it almost always reports either "all values (mod 2)
disallowed" or "all values (mod 1)").
part/dpart: count partitions of side-2 n-cube

First pass code to count the number of ways an n-dimensional cube of
side 2 can be partitioned, either counting or ignoring symmetries.