wrapping try...except around the read method code
Adding `get_fname` function.

`get_fname` makes a call to `get_fpath` with parameter
`fname_only=True`.
updating header docstring
Merging the content of several core modules into one module.
Removing old module code and module with merged content.

_decorator module renamed to _meta. Also updating __init__
module imports.
renaming core module test function
updating docstrings
removing unnecessary code from StructureIOError
Improve error handling for read method.
adding an AttrDict class
updating docstrings
Fixing get_atomID method.

Changing the method signature to use 1 positional argument
for the `atomID` attribute. Fixed code so the atomID index
is looked in the `atom_ids` list and used to return the
`Atom` from the `Atoms` list.
Renaming self._data to self.data
Adding call to `assign_unique_ids` method to __init__
Adding a check for unique atom_ids before returning list of atom_ids
Adding modified implementation of Python 3's `UserList` class.

Replacing my custom base classes for `AtomList` and `BondList`
with a modification of the `UserList` class from Python 3.

The `AtomList` and `BondList` class now subclass the `UserList`.
Updating method calls on `Atoms` class instances.

Replacing `filter_atoms` and `get_filtered_coords` methods
with call to `filter_ids`.
Refactoring `filter_*` methods.

Renaming `filter_atoms` method to `filter` and moving method
from `XAtoms` to the parent class `Atoms`. The method now
takes a `condition` argument which should be a boolean array.

Renaming `filter_atom_ids` method to `filter_ids`.

Removing `get_filtered_*` methods as they were redundant and
can be easily replaced with the updated `filter` or `filter_ids`
methods.
updating atoms tests
Removing automatic alls to `update_methods`.

Prior to this commit, the property decorator methods
called an `update_*` method to update atom attributes
based on an atom_tree query before returning the property
list of all atoms in the list. This leads to many unnecessary
repeated calls to the same update method.

This commit renames all former public update methods to
private methods (`_update_*`) and removes the automatic
calls to those methods (for now, by commenting the line out)
and adds a new public update method `update_attrs` which
calls all `_update_*` methods necessary to update atom
attributes, but only once.

It's now up to the user to call this method to update
the atom attributes.