Define less-than operator for the Atom class.
Refactor forward class declarations to a new file.

Frequently used forward declarations of smart pointers were moved
to a local header file.
WIP on optimized updater.
Fix order of methods in the derived class.

Reordered the methods, no change in the code.
Add StructureDifference class for diff storage.
Add StructureAdapter::diff for diff evaluation.

This returns a StructureDifference object representing the
difference of this StructureAdapter from another structure.
Implement diff method for AtomicStructureAdapter.

Also added simplistic unit test.
Fix Atom comparison bug.

Use cartesianuij when comparing displacement parameters.
Use fast evaluator only if there is no mask.

Added PairQuantity method hasMask.
Add method skipSite to BaseBondGenerator.

This method will allow to advance over some of the sites that were
selected with selectSiteRange.
First cut on PQEvaluatorOptimized::updateValue.

Rename BaseBondGenerator::skipSite to BaseBondGenerator::selectSite
and support flagging site selection as true and false.
Use StructureAdapterConstPtr in PairQuantity.

This may break the Python wrappers.
Fix typo in comment.
Implement side-by-side structure comparison.

This is tried for equal-length structures.  If the length is not
equal or they differ to much, the AtomicStructureAdapter::diff reverts
to comparison of sorted atoms.
Record what PQEvaluator has been in fact used.
Do template instantiation in the proper namespace.

No change in code function.  Addressed clang++ warnings.
Add iterator interface and the assign method.
Let setStructure accept derived StructureAdapter pointers.

If createStructureAdapter is not available, PairQuantity::setStructure
method will try to recast its argument as StructureAdapterPtr.
Rename mevaluatortypeused to mtypeused.

No change in code function.
Unit tests for PQEvaluator.

More tests needed.  The first test does not pass yet.