Support hash function when available in C++.

This should do for more efficient dictionaries and sets with
Atom or BVParam types.
Wrap the StructureDifference class.
Add overloadable StructureAdapter::diff method.

And also for all the derived classes AtomicStructureAdapter,
PeriodicStructureAdapter and CrystalStructureAdapter.
Make diffmethod read-only.
Docstrings for StructureDifference and related items.
Add all comparison operators for the Atom wrapper.