renaming the update methods to hiddent methods
Replacing references to self._data with just self.

Since we are subclassing MutableSequence and have implemented
all required abstractmethods from the base class, it defeats the
purpose of subclassing to be referencing the self._data list
in custom methods.
return property attributes of Atoms objects as numpy arrays, not lists
Removing lists of Atom object's properties.

The lists were pointless since they were always being
updated within the methods that returned them. Therefore
just return a list of updated properties.

Replacing self._data with just self where appropriate.
removing methods to query coordination_numbers and nearest_neighbors.
Adding total_ordering decorator methods for object comparisons.

Also changing NN_number attribute name to kNN.
adding type checks and replacing the cell count array with a Point object
adding new and updated structure data files
updating x,y,z attributes to return coordinates from self.coords
implementing NeighborAtoms class for holding list of nearest neighbors
changing default NN_cutoff value from inf to 0
updating the CN and NN attributes of the atom object instead of using temp var.
changing default CN value to 0
adding todo for future dev
Separating generator classes into separate modules.
removing atom_tree attribute
Moving the KDTree attributes and methods to separate classes.

Removing the KDTree attributes and methods from the XAtom and
XAtoms classes and creating KDTAtom and KDTAtoms classes which
are subclasses of XAtom and XAtoms, respectively, to handle
all KDTree related attributes/methods.
adding new test modules for the KDTAtom and KDTAtoms classes
adding todict method to return atom attributes as dictionary
updating __init__ module imports