evc is orthonormal, so the first block of S is I.

Its unclear how much of a performance difference this makes.
Improvements to Fermi level calculations for gaps at low T.

sumkg now accumulates in quad precision, which is important at low
spreading ('temperature').

If the bisection method in efermig is unable to localize the Fermi
level to 0.1 meV, then it will temporarily increase the spreading
until it can.

Previously, some semi-conductors (such as the Gr-hex in qe-tests)
would report Fermi levels closer to the valence band.  In theory,
the user could increase the spreading (degauss) without changing
any of the physics, which would solve this problem.  This change,
however, doesn't degrade performance and makes the code more
robust to less-than-optimal inputs.
For sanity's sake.
Merge remote-tracking branch 'upstream/maxhutch'