Improvements to `core.Atom`.

* `core.AtomInReaction` makes appearance.
More complete `core.Atom` and `core.AtomInReaction`.

* Most of the state of an atom needed has been represented by the
  above classes.
More functionality in `core.Atom`; work in progress.
Refactoring of `core.FunctionalGroup` and `core.LeavingGroup`.

* Introduced a new `core.AbstractGroup` as the base class for the
  above two classes.