More complete implementation of `Oct::Data::Molecule`.

* Minor corrections to, and enhancements of, `Oct::Data::Atom`,
  `Oct::Data::Bond` and `Oct::Data::Ring`.
* `QWeakPointer` is made use of to help normal pointers answer as
  their smart (`QSharedPointer`) counterparts, where needed.