New Flattener2, and other updates
New Flattener3

Both Flattener2 and Flattener3 try to make zero shifts at the top and
bottom. Moved old flat2.py to flatcg2.py. Likewise, moved old flat3.py
to flatcg3.py. The new flat2.py uses Flattener2 and the new flat3.py
uses Flattener3.
Use Parallel instead of AtomicInteger.
Throw away junk.
Throw away junk.
Zero shifts at top and bottom

Enforce the zero-shift boundary condition by setting shifts at top and
bottom to zero in the smoothing preconditioner.
Merge branch 'master' into dev