updating docstrings
Moving constructor logic to setter decorator methods.

Refactoring code so the `Atom` attributes are calculated and
set in their respective property decorator setter methods
instead of the constructor so that changing the `Atom` element
property automatically updates all other relevant properties.

This code needs to be more extensively tested to be sure no
regressions have been introduced.
Updating `Atom` tests.