Hold StructureAdapter objects in shared_ptr.

C++ StructureAdapter objects created from Python are now held
as smart pointers.  This ensures that shared_from_this works
and avoids the need for factory constructor.

Also removed the copy constructor wrap, not needed as StructureAdapter
classes provide clone method.
Construct BaseBondGenerator from a normal shared_ptr.

Boost Python signature would not match otherwise.
Also expose BaseBondGenerator from structureadapter module.
Support pickling for Python-derived StructureAdapter-s.