Add space-group symmetry aware structure adapter.

So far only a preliminary interface.
Simplify - no need to cast shared_ptr of (this).
Start implementing the CrystalStructureAdapter class.
Use AtomVector typedef for the Atom storage type.
Implement CrystalStructureAdapter.

CrystalStructureBondGenerator needs to be finished yet.
Shift anchor sites to the unit cell in PeriodicStructureBondGenerator.

Also make PeriodicStructureBondGenerator skip deselected sites.
Zero cell fractional coordinates that are very close to 1.
Add isSymmetryCached method to CrystalStructureAdapter.

Detect symmetry is out-of date when number of atoms in the asymmetric
unit changes.  Also add public method getEquivalentAtoms.
Assume P1 when CrystalStructureAdapter has no symmetry operations.
Implement bond generation over symmetry sites.

Not teststed, probably still buggy.
PointsInSphere data in PeriodicStructureAdapter made protected to
let CrystalStructureAdapter use them.
Added typedefs for the new structure adapters.
PythonStructureAdapter.hpp is good with incomplete types.
Finish CrystalStructureAdapter and bond generator.

Averaged fractional coordinates of equal sites must be in unit cell
otherwise they may sum up to zero.

Fixed assorted bugs in bond generation for CrystalStructureAdapter.
Adapt ObjCryst::Crystal with CrystalStructureAdapter.

Removed ObjCrystStructureAdapter and ObjCrystBondGenerator and replaced
them with CrystalStructureAdapter.
Rename PeakProfile::yvalue --> PeakProfile::operator().

It makes more sense to use PeakProfile as a functor rather than
a class with yvalue evaluation method.
Instantiate serialization for PeakWidthModelPtr.
Revert "Use StructureAdapterConstPtr in PairQuantity."

This reverts commit d6ebd8e7f1ff3d0169fa85cf6702d614e8434224.
StructureAdapterConstPtr was causing all kinds of grief in
Python wrapper classes.  We shall cache structure data in PQEvaluator
so there is no problem to have non-constant StructureAdapter
in PairQuantity.
Admit nonzero precision for GaussianProfile.

Updated GaussianProfile constructor to set the actual precision
used in the Gaussian profile calculation.
Add clone method to StructureAdapter class.

Needed by PQEvaluatorOptimized to store the last structure that
was evaluated and to allow optimized evaluation for a changed structure
instance.
Cache the last structure in PQEvaluatorOptimized.

Support optimized evaluation for a modified StructureAdapter instance.